package report

import (
	"bufio"
	"github.com/axgle/mahonia"
	"github.com/json-iterator/go"
	"io"
	"math"
	"nspel/entity"
	"nspel/nspel"
	"nspel/util"
	"os"
	"os/exec"
	"path/filepath"
	"runtime"
	"sort"
	"strconv"
	"time"
)

var json = jsoniter.ConfigCompatibleWithStandardLibrary

type avg struct {
	Total float64
	Count int64
}

func (avg *avg) add(total float64) {
	avg.Total += total
	avg.Count++
}

func (avg *avg) calculate() float64 {
	if avg.Count == 0 {
		return 0
	}
	return avg.Total / float64(avg.Count)
}

func avgMapAdd(key string, value float64, avg *map[string]avg) {
	item := (*avg)[key]
	item.add(value)
	(*avg)[key] = item
}

func avgMapCalculate(key string, avg *map[string]avg) float64 {
	item := (*avg)[key]
	return item.calculate()
}

type distribution4 struct {
	count1 int64
	count2 int64
	count3 int64
	count4 int64
	count  int64
}

func (distribution4 *distribution4) add(score float64, score1 float64, score2 float64, score3 float64) {
	if score >= score1 {
		distribution4.count1++
	} else if score >= score2 {
		distribution4.count2++
	} else if score >= score3 {
		distribution4.count3++
	} else {
		distribution4.count4++
	}
	distribution4.count++
}

func (distribution4 *distribution4) add3(level string, level1 string, level2 string, level3 string) {
	if level == level1 {
		distribution4.count1++
	} else if level == level2 {
		distribution4.count2++
	} else if level == level3 {
		distribution4.count3++
	}
	distribution4.count++
}

func (distribution4 *distribution4) add4(level string, level1 string, level2 string, level3 string, level4 string) {
	if level == level1 {
		distribution4.count1++
	} else if level == level2 {
		distribution4.count2++
	} else if level == level3 {
		distribution4.count3++
	} else if level == level4 {
		distribution4.count4++
	}
	distribution4.count++
}

func (distribution4 *distribution4) calculate() []float64 {
	if distribution4.count == 0 {
		return []float64{0, 0, 0, 0}
	}
	return []float64{float64(distribution4.count1) / float64(distribution4.count), float64(distribution4.count2) / float64(distribution4.count), float64(distribution4.count3) / float64(distribution4.count), float64(distribution4.count4) / float64(distribution4.count)}
}

func (distribution4 *distribution4) calculate1() item2EachInfoDetailPercentage {
	if distribution4.count == 0 {
		return item2EachInfoDetailPercentage{0, 0, 0, 0, 0}
	}
	return item2EachInfoDetailPercentage{Failed: float64(distribution4.count4) / float64(distribution4.count), Pass: float64(distribution4.count3) / float64(distribution4.count), Good: float64(distribution4.count2) / float64(distribution4.count), Excellent: float64(distribution4.count1) / float64(distribution4.count), Qualified: float64(distribution4.count1+distribution4.count2+distribution4.count3) / float64(distribution4.count)}
}

func (distribution4 *distribution4) calculate2() item4EachInfoDetailPercentage {
	if distribution4.count == 0 {
		return item4EachInfoDetailPercentage{0, 0, 0, 0, 0}
	}
	return item4EachInfoDetailPercentage{Failed: float64(distribution4.count4) / float64(distribution4.count), Pass: float64(distribution4.count3) / float64(distribution4.count), Good: float64(distribution4.count2) / float64(distribution4.count), Excellent: float64(distribution4.count1) / float64(distribution4.count), Qualified: float64(distribution4.count1+distribution4.count2+distribution4.count3) / float64(distribution4.count)}
}

func (distribution4 *distribution4) calculate3() item4EachInfoDetailNums {
	return item4EachInfoDetailNums{Failed: distribution4.count4, Pass: distribution4.count3, Good: distribution4.count2, Excellent: distribution4.count1, Qualified: distribution4.count1 + distribution4.count2 + distribution4.count3}
}

func (distribution4 *distribution4) calculateCustom(i int64) float64 {
	if distribution4.count == 0 {
		return 0
	}
	switch i {
	case 1:
		return float64(distribution4.count1) / float64(distribution4.count)
	case 2:
		return float64(distribution4.count2) / float64(distribution4.count)
	case 3:
		return float64(distribution4.count3) / float64(distribution4.count)
	case 4:
		return float64(distribution4.count4) / float64(distribution4.count)
	}
	return 0
}

func distributionMapAdd4(level string, level1 string, level2 string, level3 string, level4 string, key string, hashMap *map[string]distribution4) {
	distribution := (*hashMap)[key]
	distribution.add4(level, level1, level2, level3, level4)
	(*hashMap)[key] = distribution
}

func distributionMapAdd(score float64, score1 float64, score2 float64, score3 float64, key string, hashMap *map[string]distribution4) {
	distribution := (*hashMap)[key]
	distribution.add(score, score1, score2, score3)
	(*hashMap)[key] = distribution
}

func distributionMapCalculate4(key string, hashMap *map[string]distribution4) item5EachInfoDetailPercentage {
	distribution4 := (*hashMap)[key]
	if distribution4.count == 0 {
		return item5EachInfoDetailPercentage{0, 0, 0, 0, 0}
	}
	return item5EachInfoDetailPercentage{Failed: float64(distribution4.count4) / float64(distribution4.count), Pass: float64(distribution4.count3) / float64(distribution4.count), Good: float64(distribution4.count2) / float64(distribution4.count), Excellent: float64(distribution4.count1) / float64(distribution4.count), Qualified: float64(distribution4.count1+distribution4.count2+distribution4.count3) / float64(distribution4.count)}
}

func distributionCalculate5(key string, hashMap *map[string]distribution4) item7EachInfoDetailNums {
	distribution4 := (*hashMap)[key]
	return item7EachInfoDetailNums{Failed: distribution4.count4, Pass: distribution4.count3, Good: distribution4.count2, Excellent: distribution4.count1, Qualified: distribution4.count1 + distribution4.count2 + distribution4.count3}
}

func distributionCalculate6(key string, hashMap *map[string]distribution4) item7EachInfoDetailPercentage {
	distribution4 := (*hashMap)[key]
	if distribution4.count == 0 {
		return item7EachInfoDetailPercentage{0, 0, 0, 0, 0}
	}
	return item7EachInfoDetailPercentage{Failed: float64(distribution4.count4) / float64(distribution4.count), Pass: float64(distribution4.count3) / float64(distribution4.count), Good: float64(distribution4.count2) / float64(distribution4.count), Excellent: float64(distribution4.count1) / float64(distribution4.count), Qualified: float64(distribution4.count1+distribution4.count2+distribution4.count3) / float64(distribution4.count)}
}

func distributionMapCustomCalculate4(i int64, key string, hashMap *map[string]distribution4) float64 {
	distribution4 := (*hashMap)[key]
	return distribution4.calculateCustom(i)
}

func GenerateSchoolReport(schoolId int64, measurementDate time.Time) error {
	school := new(entity.School)
	err := school.SelectAllById(schoolId)
	if err != nil {
		return err
	}
	var data string
	if entity.SchoolTypeMapCode[school.SchoolType] == "小" {
		err, data = generatePrimaryReport(school, measurementDate)
		if err != nil {
			return err
		}
	} else {
		err, data = generateHighReport(school, measurementDate)
		if err != nil {
			return err
		}
	}
	if school.Name == "北京第二外国语学院附属中学小学部" {
		nspel.Info(data)
	}
	return callScript(data, "school")
}

func callScript(data string, typeS string) error {
	dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
	if err != nil {
		nspel.Error(err)
		return err
	}
	cmd := exec.Command("python", "main.py", "--type="+typeS, "--output_pptx_dir=./output", "--output_pdf_dir=./")
	cmd.Dir = dir + "/pptx-reports/reports"
	stdout, err := cmd.StdoutPipe()
	if err != nil {
		nspel.Error(err)
		return err
	}
	stderr, err := cmd.StderrPipe()
	if err != nil {
		nspel.Error(err)
		return err
	}
	stdin, err := cmd.StdinPipe()
	if err != nil {
		nspel.Error(err)
		return err
	}
	err = cmd.Start()
	if err != nil {
		nspel.Error(err)
		return err
	}
	enc := mahonia.NewEncoder("gbk")
	data = enc.ConvertString(data)
	stdin.Write([]byte(data))
	stdin.Write([]byte{'\n'})
	go logStdout(&stdout)
	go logStderr(&stderr)
	return cmd.Wait()
}

func logStdout(stdout *io.ReadCloser) {
	reader := bufio.NewReader(*stdout)
	dec := mahonia.NewDecoder("gbk")
	for {
		line, err2 := reader.ReadString('\n')
		if err2 != nil || io.EOF == err2 {
			break
		}
		if line[len(line)-2] == '\r' {
			line = line[0 : len(line)-2]
		} else {
			line = line[0 : len(line)-1]
		}
		if runtime.GOOS == "windows" {
			nspel.Error(dec.ConvertString(line))
		} else {
			nspel.Error(line)
		}
	}
}

func logStderr(stderr *io.ReadCloser) {
	reader := bufio.NewReader(*stderr)
	dec := mahonia.NewDecoder("gbk")
	for {
		line, err2 := reader.ReadString('\n')
		if err2 != nil || io.EOF == err2 {
			break
		}
		if line[len(line)-2] == '\r' {
			line = line[0 : len(line)-2]
		} else {
			line = line[0 : len(line)-1]
		}
		if runtime.GOOS == "windows" {
			nspel.Error(dec.ConvertString(line))
		} else {
			nspel.Error(line)
		}
	}
}

func GenerateGradeReport(report *entity.Report) error {
	school := new(entity.School)
	err := school.SelectAllById(report.SchoolId)
	if err != nil {
		return err
	}
	var data string
	if entity.SchoolTypeMapCode[school.SchoolType] == "小" {
		err, data = generatePrimaryGradeReport(school, report.MeasureTime, report.Info.String)
		if err != nil {
			return err
		}
	} else {
		err, data = generateHighGradeReport(school, report.MeasureTime, report.Info.String)
		if err != nil {
			return err
		}
	}
	return callScript(data, "grade_classes")
}

func generatePrimaryReport(school *entity.School, measurementDate time.Time) (err error, jsonStr string) {
	reportData := Primary{}
	err = reportData.Init(school, measurementDate)
	if err != nil {
		return err, ""
	}
	var scores []entity.Score
	_, err = nspel.GetOrmEngine().QueryTable("score").Filter("school_id", school.Id).Filter("measurement_date", measurementDate.Format("2006-01-02")).All(&scores)
	if err != nil {
		return err, ""
	}
	var scoreAvg, boyScoreAvg, girlScoreAvg avg
	var heightAvg, heightBoy, heightGirl [6]avg
	var weightAvg, weightBoy, weightGirl [6]avg
	var bodyMassIndexAvg, bodyMassIndexBoy, bodyMassIndexGirl, bodyMassIndexScoreAvg, bodyMassIndexScoreBoy, bodyMassIndexScoreGirl [7]avg
	var bodyFatAvg, bodyFatBoy, bodyFatGirl [7]avg
	var vitalCapacityAvg, vitalCapacityBoy, vitalCapacityGirl, vitalCapacityScoreAvg, vitalCapacityScoreBoy, vitalCapacityScoreGirl [7]avg
	var fiftyMetersAvg, fiftyMetersBoy, fiftyMetersGirl, fiftyMetersScoreAvg, fiftyMetersScoreBoy, fiftyMetersScoreGirl [7]avg
	var sitAndReachAvg, sitAndReachBoy, sitAndReachGirl, sitAndReachScoreAvg, sitAndReachScoreBoy, sitAndReachScoreGirl [7]avg
	var oneMinuteSkippingAvg, oneMinuteSkippingBoy, oneMinuteSkippingGirl, oneMinuteSkippingScoreAvg, oneMinuteSkippingScoreBoy, oneMinuteSkippingScoreGirl [7]avg
	var oneMinuteSitUpsAvg, oneMinuteSitUpsBoy, oneMinuteSitUpsGirl, oneMinuteSitUpsScoreAvg, oneMinuteSitUpsScoreBoy, oneMinuteSitUpsScoreGirl [7]avg
	var shuttleRunAvg, shuttleRunBoy, shuttleRunGirl, shuttleRunScoreAvg, shuttleRunScoreBoy, shuttleRunScoreGirl [7]avg
	var gripAvg, gripBoy, gripGirl [7]avg
	var reactionSpeedAvg, reactionSpeedBoy, reactionSpeedGirl [7]avg
	var verticalJumpAvg, verticalJumpBoy, verticalJumpGirl [7]avg
	var balanceAbilityAvg, balanceAbilityBoy, balanceAbilityGirl [7]avg
	var bodyMassIndexMaxBoy, bodyMassIndexMaxGirl, bodyMassIndexMaxAvg [7]float64
	var bodyMassIndexMinBoy, bodyMassIndexMinGirl, bodyMassIndexMinAvg [7]float64
	bodyMassIndexMaxBoy = [7]float64{math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64}
	bodyMassIndexMaxGirl = [7]float64{math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64}
	bodyMassIndexMaxAvg = [7]float64{math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64}
	bodyMassIndexMinBoy = [7]float64{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64}
	bodyMassIndexMinGirl = [7]float64{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64}
	bodyMassIndexMinAvg = [7]float64{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64}
	var boyDistribution4, girlDistribution4, avgDistribution4 distribution4
	var bodyMassIndexDistribution4Boy, bodyMassIndexDistribution4Girl, bodyMassIndexDistribution4Avg [7]distribution4
	var bodyFatDistribution4Boy, bodyFatDistribution4Girl, bodyFatDistribution4Avg [7]distribution4
	var vitalCapacityDistribution4Avg, vitalCapacityDistribution4Boy, vitalCapacityDistribution4Girl [7]distribution4
	var fiftyMetersDistribution4Avg, fiftyMetersDistribution4Boy, fiftyMetersDistribution4Girl [7]distribution4
	var sitAndReachDistribution4Avg, sitAndReachDistribution4Boy, sitAndReachDistribution4Girl [7]distribution4
	var oneMinuteSkippingDistribution4Avg, oneMinuteSkippingDistribution4Boy, oneMinuteSkippingDistribution4Girl [7]distribution4
	var oneMinuteSitUpsDistribution4Avg, oneMinuteSitUpsDistribution4Boy, oneMinuteSitUpsDistribution4Girl [7]distribution4
	var shuttleRunDistribution4Avg, shuttleRunDistribution4Boy, shuttleRunDistribution4Girl [7]distribution4
	var gripDistribution4Avg, gripDistribution4Boy, gripDistribution4Girl [7]distribution4
	var reactionSpeedDistribution4Avg, reactionSpeedDistribution4Boy, reactionSpeedDistribution4Girl [7]distribution4
	var verticalJumpDistribution4Avg, verticalJumpDistribution4Boy, verticalJumpDistribution4Girl [7]distribution4
	var balanceAbilityDistribution4Avg, balanceAbilityDistribution4Boy, balanceAbilityDistribution4Girl [7]distribution4
	for i := 0; i < len(scores); i++ {
		if scores[i].MissingTestNum == 0 {
			scoreAvg.add(scores[i].PhysicalTotalScore.Float64)
			avgDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				boyScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				boyDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				girlScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				girlDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			}
		}
		grade, _ := strconv.ParseInt(scores[i].Grade[1:2], 10, 64)
		grade = grade - 1
		if scores[i].Sex == 1 {
			reportData.StudentNum.EachInfo[grade].Boy++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					reportData.StudentNum.EachInfo[grade].BoyPrivilege++
				} else {
					reportData.StudentNum.EachInfo[grade].BoyAbsent++
				}
			}
		} else if scores[i].Sex == 2 {
			reportData.StudentNum.EachInfo[grade].Girl++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					reportData.StudentNum.EachInfo[grade].GirlPrivilege++
				} else {
					reportData.StudentNum.EachInfo[grade].GirlAbsent++
				}
			}
		}
		if scores[i].Height.Valid {
			heightAvg[grade].add(scores[i].Height.Float64)
			if scores[i].Sex == 1 {
				heightBoy[grade].add(scores[i].Height.Float64)
			} else if scores[i].Sex == 2 {
				heightGirl[grade].add(scores[i].Height.Float64)
			}
		}
		if scores[i].Weight.Valid {
			weightAvg[grade].add(scores[i].Weight.Float64)
			if scores[i].Sex == 1 {
				weightBoy[grade].add(scores[i].Weight.Float64)
			} else if scores[i].Sex == 2 {
				weightGirl[grade].add(scores[i].Weight.Float64)
			}
		}
		if scores[i].BodyMassIndex.Valid {
			bodyMassIndexAvg[6].add(scores[i].BodyMassIndex.Float64)
			bodyMassIndexAvg[grade].add(scores[i].BodyMassIndex.Float64)
			bodyMassIndexScoreAvg[6].add(scores[i].BodyMassIndexTotalScore.Float64)
			bodyMassIndexScoreAvg[grade].add(scores[i].BodyMassIndexTotalScore.Float64)
			bodyMassIndexMaxAvg[6] = math.Max(bodyMassIndexMaxAvg[6], scores[i].BodyMassIndex.Float64)
			bodyMassIndexMaxAvg[grade] = math.Max(bodyMassIndexMaxAvg[grade], scores[i].BodyMassIndex.Float64)
			bodyMassIndexMinAvg[6] = math.Min(bodyMassIndexMinAvg[6], scores[i].BodyMassIndex.Float64)
			bodyMassIndexMinAvg[grade] = math.Min(bodyMassIndexMinAvg[grade], scores[i].BodyMassIndex.Float64)
			bodyMassIndexDistribution4Avg[6].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			bodyMassIndexDistribution4Avg[grade].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			if scores[i].Sex == 1 {
				bodyMassIndexBoy[6].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexBoy[grade].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexScoreBoy[6].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexScoreBoy[grade].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexMaxBoy[6] = math.Max(bodyMassIndexMaxBoy[6], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMaxBoy[grade] = math.Max(bodyMassIndexMaxBoy[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinBoy[6] = math.Min(bodyMassIndexMinBoy[6], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinBoy[grade] = math.Min(bodyMassIndexMinBoy[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexDistribution4Boy[6].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
				bodyMassIndexDistribution4Boy[grade].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			} else if scores[i].Sex == 2 {
				bodyMassIndexGirl[grade].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexGirl[6].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexScoreGirl[6].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexScoreGirl[grade].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexMaxGirl[6] = math.Max(bodyMassIndexMaxGirl[6], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMaxGirl[grade] = math.Max(bodyMassIndexMaxGirl[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinGirl[6] = math.Min(bodyMassIndexMinGirl[6], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinGirl[grade] = math.Min(bodyMassIndexMinGirl[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexDistribution4Girl[6].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
				bodyMassIndexDistribution4Girl[grade].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			}
		}
		if scores[i].BodyFat.Valid {
			reportData.SchoolInfo.HasExtension = true
			bodyFatAvg[grade].add(scores[i].BodyFat.Float64)
			bodyFatAvg[6].add(scores[i].BodyFat.Float64)
			bodyFatDistribution4Avg[grade].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			bodyFatDistribution4Avg[6].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			if scores[i].Sex == 1 {
				bodyFatBoy[grade].add(scores[i].BodyFat.Float64)
				bodyFatBoy[6].add(scores[i].BodyFat.Float64)
				bodyFatDistribution4Boy[grade].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
				bodyFatDistribution4Boy[6].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			} else if scores[i].Sex == 2 {
				bodyFatGirl[grade].add(scores[i].BodyFat.Float64)
				bodyFatGirl[6].add(scores[i].BodyFat.Float64)
				bodyFatDistribution4Girl[grade].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
				bodyFatDistribution4Girl[6].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			}
		}
		if scores[i].VitalCapacity.Valid {
			vitalCapacityAvg[grade].add(scores[i].VitalCapacity.Float64)
			vitalCapacityAvg[6].add(scores[i].VitalCapacity.Float64)
			vitalCapacityScoreAvg[grade].add(scores[i].VitalCapacityTotalScore.Float64)
			vitalCapacityScoreAvg[6].add(scores[i].VitalCapacityTotalScore.Float64)
			vitalCapacityDistribution4Avg[grade].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			vitalCapacityDistribution4Avg[6].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				vitalCapacityBoy[grade].add(scores[i].VitalCapacity.Float64)
				vitalCapacityBoy[6].add(scores[i].VitalCapacity.Float64)
				vitalCapacityScoreBoy[grade].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityScoreBoy[6].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityDistribution4Boy[grade].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
				vitalCapacityDistribution4Boy[6].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				vitalCapacityGirl[grade].add(scores[i].VitalCapacity.Float64)
				vitalCapacityGirl[6].add(scores[i].VitalCapacity.Float64)
				vitalCapacityScoreGirl[grade].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityScoreGirl[6].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityDistribution4Girl[grade].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
				vitalCapacityDistribution4Girl[6].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].FiftyMeters.Valid {
			fiftyMetersAvg[grade].add(scores[i].FiftyMeters.Float64)
			fiftyMetersAvg[6].add(scores[i].FiftyMeters.Float64)
			fiftyMetersScoreAvg[grade].add(scores[i].FiftyMetersTotalScore.Float64)
			fiftyMetersScoreAvg[6].add(scores[i].FiftyMetersTotalScore.Float64)
			fiftyMetersDistribution4Avg[grade].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			fiftyMetersDistribution4Avg[6].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				fiftyMetersBoy[grade].add(scores[i].FiftyMeters.Float64)
				fiftyMetersBoy[6].add(scores[i].FiftyMeters.Float64)
				fiftyMetersScoreBoy[grade].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersScoreBoy[6].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersDistribution4Boy[grade].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
				fiftyMetersDistribution4Boy[6].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				fiftyMetersGirl[grade].add(scores[i].FiftyMeters.Float64)
				fiftyMetersGirl[6].add(scores[i].FiftyMeters.Float64)
				fiftyMetersScoreGirl[grade].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersScoreGirl[6].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersDistribution4Girl[grade].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
				fiftyMetersDistribution4Girl[6].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].SitAndReach.Valid {
			sitAndReachAvg[grade].add(scores[i].SitAndReach.Float64)
			sitAndReachAvg[6].add(scores[i].SitAndReach.Float64)
			sitAndReachScoreAvg[grade].add(scores[i].SitAndReachTotalScore.Float64)
			sitAndReachScoreAvg[6].add(scores[i].SitAndReachTotalScore.Float64)
			sitAndReachDistribution4Avg[grade].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			sitAndReachDistribution4Avg[6].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				sitAndReachBoy[grade].add(scores[i].SitAndReach.Float64)
				sitAndReachBoy[6].add(scores[i].SitAndReach.Float64)
				sitAndReachScoreBoy[grade].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachScoreBoy[6].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachDistribution4Boy[grade].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
				sitAndReachDistribution4Boy[6].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				sitAndReachGirl[grade].add(scores[i].SitAndReach.Float64)
				sitAndReachGirl[6].add(scores[i].SitAndReach.Float64)
				sitAndReachScoreGirl[grade].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachScoreGirl[6].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachDistribution4Girl[grade].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
				sitAndReachDistribution4Girl[6].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].OneMinuteRopeSkipping.Valid {
			oneMinuteSkippingAvg[grade].add(scores[i].OneMinuteRopeSkipping.Float64)
			oneMinuteSkippingAvg[6].add(scores[i].OneMinuteRopeSkipping.Float64)
			oneMinuteSkippingScoreAvg[grade].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64)
			oneMinuteSkippingScoreAvg[6].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64)
			oneMinuteSkippingDistribution4Avg[grade].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60)
			oneMinuteSkippingDistribution4Avg[6].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				oneMinuteSkippingBoy[grade].add(scores[i].OneMinuteRopeSkipping.Float64)
				oneMinuteSkippingBoy[6].add(scores[i].OneMinuteRopeSkipping.Float64)
				oneMinuteSkippingScoreBoy[grade].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64)
				oneMinuteSkippingScoreBoy[6].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64)
				oneMinuteSkippingDistribution4Boy[grade].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60)
				oneMinuteSkippingDistribution4Boy[6].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				oneMinuteSkippingGirl[grade].add(scores[i].OneMinuteRopeSkipping.Float64)
				oneMinuteSkippingGirl[6].add(scores[i].OneMinuteRopeSkipping.Float64)
				oneMinuteSkippingScoreGirl[grade].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64)
				oneMinuteSkippingScoreGirl[6].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64)
				oneMinuteSkippingDistribution4Girl[grade].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60)
				oneMinuteSkippingDistribution4Girl[6].add(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].OneMinuteSitUp.Valid {
			oneMinuteSitUpsAvg[grade].add(scores[i].OneMinuteSitUp.Float64)
			oneMinuteSitUpsAvg[6].add(scores[i].OneMinuteSitUp.Float64)
			oneMinuteSitUpsScoreAvg[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64)
			oneMinuteSitUpsScoreAvg[6].add(scores[i].OneMinuteSitUpTotalScore.Float64)
			oneMinuteSitUpsDistribution4Avg[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
			oneMinuteSitUpsDistribution4Avg[6].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				oneMinuteSitUpsBoy[grade].add(scores[i].OneMinuteSitUp.Float64)
				oneMinuteSitUpsBoy[6].add(scores[i].OneMinuteSitUp.Float64)
				oneMinuteSitUpsScoreBoy[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64)
				oneMinuteSitUpsScoreBoy[6].add(scores[i].OneMinuteSitUpTotalScore.Float64)
				oneMinuteSitUpsDistribution4Boy[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
				oneMinuteSitUpsDistribution4Boy[6].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				oneMinuteSitUpsGirl[grade].add(scores[i].OneMinuteSitUp.Float64)
				oneMinuteSitUpsGirl[6].add(scores[i].OneMinuteSitUp.Float64)
				oneMinuteSitUpsScoreGirl[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64)
				oneMinuteSitUpsScoreGirl[6].add(scores[i].OneMinuteSitUpTotalScore.Float64)
				oneMinuteSitUpsDistribution4Girl[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
				oneMinuteSitUpsDistribution4Girl[6].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].ShuttleRun.Valid {
			shuttleRunAvg[grade].add(scores[i].ShuttleRun.Float64)
			shuttleRunAvg[6].add(scores[i].ShuttleRun.Float64)
			shuttleRunScoreAvg[grade].add(scores[i].ShuttleRunTotalScore.Float64)
			shuttleRunScoreAvg[6].add(scores[i].ShuttleRunTotalScore.Float64)
			shuttleRunDistribution4Avg[grade].add(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60)
			shuttleRunDistribution4Avg[6].add(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				shuttleRunBoy[grade].add(scores[i].ShuttleRun.Float64)
				shuttleRunBoy[6].add(scores[i].ShuttleRun.Float64)
				shuttleRunScoreBoy[grade].add(scores[i].ShuttleRunTotalScore.Float64)
				shuttleRunScoreBoy[6].add(scores[i].ShuttleRunTotalScore.Float64)
				shuttleRunDistribution4Boy[grade].add(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60)
				shuttleRunDistribution4Boy[6].add(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				shuttleRunGirl[grade].add(scores[i].ShuttleRun.Float64)
				shuttleRunGirl[6].add(scores[i].ShuttleRun.Float64)
				shuttleRunScoreGirl[grade].add(scores[i].ShuttleRunTotalScore.Float64)
				shuttleRunScoreGirl[6].add(scores[i].ShuttleRunTotalScore.Float64)
				shuttleRunDistribution4Girl[grade].add(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60)
				shuttleRunDistribution4Girl[6].add(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].GripStrength.Valid {
			reportData.SchoolInfo.HasExtension = true
			gripAvg[grade].add(scores[i].GripStrength.Float64)
			gripAvg[6].add(scores[i].GripStrength.Float64)
			gripDistribution4Avg[grade].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			gripDistribution4Avg[6].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				gripBoy[grade].add(scores[i].GripStrength.Float64)
				gripBoy[6].add(scores[i].GripStrength.Float64)
				gripDistribution4Boy[grade].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
				gripDistribution4Boy[6].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				gripGirl[grade].add(scores[i].GripStrength.Float64)
				gripGirl[6].add(scores[i].GripStrength.Float64)
				gripDistribution4Girl[grade].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
				gripDistribution4Girl[6].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
		if scores[i].ResponseCapability.Valid {
			reportData.SchoolInfo.HasExtension = true
			reactionSpeedAvg[grade].add(scores[i].ResponseCapability.Float64)
			reactionSpeedAvg[6].add(scores[i].ResponseCapability.Float64)
			reactionSpeedDistribution4Avg[grade].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			reactionSpeedDistribution4Avg[6].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				reactionSpeedBoy[grade].add(scores[i].ResponseCapability.Float64)
				reactionSpeedBoy[6].add(scores[i].ResponseCapability.Float64)
				reactionSpeedDistribution4Boy[grade].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
				reactionSpeedDistribution4Boy[6].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				reactionSpeedGirl[grade].add(scores[i].ResponseCapability.Float64)
				reactionSpeedGirl[6].add(scores[i].ResponseCapability.Float64)
				reactionSpeedDistribution4Girl[grade].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
				reactionSpeedDistribution4Girl[6].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
		if scores[i].VerticalJump.Valid {
			reportData.SchoolInfo.HasExtension = true
			verticalJumpAvg[grade].add(scores[i].VerticalJump.Float64)
			verticalJumpAvg[6].add(scores[i].VerticalJump.Float64)
			verticalJumpDistribution4Avg[grade].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			verticalJumpDistribution4Avg[6].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				verticalJumpBoy[grade].add(scores[i].VerticalJump.Float64)
				verticalJumpBoy[6].add(scores[i].VerticalJump.Float64)
				verticalJumpDistribution4Boy[grade].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
				verticalJumpDistribution4Boy[6].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				verticalJumpGirl[grade].add(scores[i].VerticalJump.Float64)
				verticalJumpGirl[6].add(scores[i].VerticalJump.Float64)
				verticalJumpDistribution4Girl[grade].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
				verticalJumpDistribution4Girl[6].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
		if scores[i].BalanceAbility.Valid {
			reportData.SchoolInfo.HasExtension = true
			balanceAbilityAvg[grade].add(scores[i].BalanceAbility.Float64)
			balanceAbilityAvg[6].add(scores[i].BalanceAbility.Float64)
			balanceAbilityDistribution4Avg[grade].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			balanceAbilityDistribution4Avg[6].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				balanceAbilityBoy[grade].add(scores[i].BalanceAbility.Float64)
				balanceAbilityBoy[6].add(scores[i].BalanceAbility.Float64)
				balanceAbilityDistribution4Boy[grade].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
				balanceAbilityDistribution4Boy[6].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				balanceAbilityGirl[grade].add(scores[i].BalanceAbility.Float64)
				balanceAbilityGirl[6].add(scores[i].BalanceAbility.Float64)
				balanceAbilityDistribution4Girl[grade].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
				balanceAbilityDistribution4Girl[6].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
	}
	reportData.SchoolInfo.Score = scoreAvg.calculate()
	if reportData.SchoolInfo.Score >= 90 {
		reportData.SchoolInfo.Level = "优"
	} else if reportData.SchoolInfo.Score >= 80 {
		reportData.SchoolInfo.Level = "良"
	} else if reportData.SchoolInfo.Score >= 60 {
		reportData.SchoolInfo.Level = "中"
	} else {
		reportData.SchoolInfo.Level = "差"
	}
	reportData.EachScoreInfo.Total.BoyScore = boyScoreAvg.calculate()
	reportData.EachScoreInfo.Total.GirlScore = girlScoreAvg.calculate()
	reportData.EachScoreInfo.Total.AvgScore = reportData.SchoolInfo.Score
	reportData.SchoolScoresInfo.Boy = boyDistribution4.calculate()
	reportData.SchoolScoresInfo.Girl = girlDistribution4.calculate()
	reportData.SchoolScoresInfo.Avg = avgDistribution4.calculate()
	for i := 0; i < 6; i++ {
		reportData.Height.EachInfo[i].Boy.Result = heightBoy[i].calculate()
		reportData.Height.EachInfo[i].Girl.Result = heightGirl[i].calculate()
		reportData.Height.EachInfo[i].Avg.Result = heightAvg[i].calculate()
		reportData.Weight.EachInfo[i].Boy.Result = weightBoy[i].calculate()
		reportData.Weight.EachInfo[i].Girl.Result = weightGirl[i].calculate()
		reportData.Weight.EachInfo[i].Avg.Result = weightAvg[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Boy.Result = bodyMassIndexBoy[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Girl.Result = bodyMassIndexGirl[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Avg.Result = bodyMassIndexAvg[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Boy.Score = bodyMassIndexScoreBoy[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Girl.Score = bodyMassIndexScoreGirl[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Avg.Score = bodyMassIndexScoreAvg[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Boy.Max = bodyMassIndexMaxBoy[i]
		reportData.BodyMassIndex.EachInfo[i].Boy.Min = bodyMassIndexMinBoy[i]
		reportData.BodyMassIndex.EachInfo[i].Girl.Max = bodyMassIndexMaxGirl[i]
		reportData.BodyMassIndex.EachInfo[i].Girl.Min = bodyMassIndexMinGirl[i]
		reportData.BodyMassIndex.EachInfo[i].Avg.Max = bodyMassIndexMaxAvg[i]
		reportData.BodyMassIndex.EachInfo[i].Avg.Min = bodyMassIndexMinAvg[i]
		reportData.BodyMassIndex.EachInfo[i].Boy.Percentage = bodyMassIndexDistribution4Boy[i].calculate1()
		reportData.BodyMassIndex.EachInfo[i].Girl.Percentage = bodyMassIndexDistribution4Girl[i].calculate1()
		reportData.BodyMassIndex.EachInfo[i].Avg.Percentage = bodyMassIndexDistribution4Avg[i].calculate1()
		reportData.BodyFat.EachInfo[i].Boy.Result = bodyFatBoy[i].calculate()
		reportData.BodyFat.EachInfo[i].Girl.Result = bodyFatGirl[i].calculate()
		reportData.BodyFat.EachInfo[i].Avg.Result = bodyFatAvg[i].calculate()
		reportData.BodyFat.EachInfo[i].Boy.Standard = bodyFatDistribution4Boy[i].calculateCustom(1)
		reportData.BodyFat.EachInfo[i].Boy.Excess = bodyFatDistribution4Boy[i].calculateCustom(2)
		reportData.BodyFat.EachInfo[i].Boy.LowStandard = bodyFatDistribution4Boy[i].calculateCustom(3)
		reportData.BodyFat.EachInfo[i].Girl.Standard = bodyFatDistribution4Girl[i].calculateCustom(1)
		reportData.BodyFat.EachInfo[i].Girl.Excess = bodyFatDistribution4Girl[i].calculateCustom(2)
		reportData.BodyFat.EachInfo[i].Girl.LowStandard = bodyFatDistribution4Girl[i].calculateCustom(3)
		reportData.BodyFat.EachInfo[i].Avg.Standard = bodyFatDistribution4Avg[i].calculateCustom(1)
		reportData.BodyFat.EachInfo[i].Avg.Excess = bodyFatDistribution4Avg[i].calculateCustom(2)
		reportData.BodyFat.EachInfo[i].Avg.LowStandard = bodyFatDistribution4Avg[i].calculateCustom(3)
		reportData.VitalCapacity.EachInfo[i].Boy.Result = vitalCapacityBoy[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Girl.Result = vitalCapacityGirl[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Avg.Result = vitalCapacityAvg[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Boy.Score = vitalCapacityScoreBoy[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Girl.Score = vitalCapacityScoreGirl[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Avg.Score = vitalCapacityScoreAvg[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Boy.Nums = vitalCapacityDistribution4Boy[i].calculate3()
		reportData.VitalCapacity.EachInfo[i].Boy.Percentage = vitalCapacityDistribution4Boy[i].calculate2()
		reportData.VitalCapacity.EachInfo[i].Girl.Nums = vitalCapacityDistribution4Girl[i].calculate3()
		reportData.VitalCapacity.EachInfo[i].Girl.Percentage = vitalCapacityDistribution4Girl[i].calculate2()
		reportData.VitalCapacity.EachInfo[i].Avg.Nums = vitalCapacityDistribution4Avg[i].calculate3()
		reportData.VitalCapacity.EachInfo[i].Avg.Percentage = vitalCapacityDistribution4Avg[i].calculate2()
		reportData.FiftyMeter.EachInfo[i].Boy.Result = fiftyMetersBoy[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Girl.Result = fiftyMetersGirl[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Avg.Result = fiftyMetersAvg[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Boy.Score = fiftyMetersScoreBoy[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Girl.Score = fiftyMetersScoreGirl[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Avg.Score = fiftyMetersScoreAvg[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Boy.Nums = fiftyMetersDistribution4Boy[i].calculate3()
		reportData.FiftyMeter.EachInfo[i].Boy.Percentage = fiftyMetersDistribution4Boy[i].calculate2()
		reportData.FiftyMeter.EachInfo[i].Girl.Nums = fiftyMetersDistribution4Girl[i].calculate3()
		reportData.FiftyMeter.EachInfo[i].Girl.Percentage = fiftyMetersDistribution4Girl[i].calculate2()
		reportData.FiftyMeter.EachInfo[i].Avg.Nums = fiftyMetersDistribution4Avg[i].calculate3()
		reportData.FiftyMeter.EachInfo[i].Avg.Percentage = fiftyMetersDistribution4Avg[i].calculate2()
		reportData.SitAndReach.EachInfo[i].Boy.Result = sitAndReachBoy[i].calculate()
		reportData.SitAndReach.EachInfo[i].Girl.Result = sitAndReachGirl[i].calculate()
		reportData.SitAndReach.EachInfo[i].Avg.Result = sitAndReachAvg[i].calculate()
		reportData.SitAndReach.EachInfo[i].Boy.Score = sitAndReachScoreBoy[i].calculate()
		reportData.SitAndReach.EachInfo[i].Girl.Score = sitAndReachScoreGirl[i].calculate()
		reportData.SitAndReach.EachInfo[i].Avg.Score = sitAndReachScoreAvg[i].calculate()
		reportData.SitAndReach.EachInfo[i].Boy.Nums = sitAndReachDistribution4Boy[i].calculate3()
		reportData.SitAndReach.EachInfo[i].Boy.Percentage = sitAndReachDistribution4Boy[i].calculate2()
		reportData.SitAndReach.EachInfo[i].Girl.Nums = sitAndReachDistribution4Girl[i].calculate3()
		reportData.SitAndReach.EachInfo[i].Girl.Percentage = sitAndReachDistribution4Girl[i].calculate2()
		reportData.SitAndReach.EachInfo[i].Avg.Nums = sitAndReachDistribution4Avg[i].calculate3()
		reportData.SitAndReach.EachInfo[i].Avg.Percentage = sitAndReachDistribution4Avg[i].calculate2()
		reportData.OneMinuteSkipping.EachInfo[i].Boy.Result = oneMinuteSkippingBoy[i].calculate()
		reportData.OneMinuteSkipping.EachInfo[i].Girl.Result = oneMinuteSkippingGirl[i].calculate()
		reportData.OneMinuteSkipping.EachInfo[i].Avg.Result = oneMinuteSkippingAvg[i].calculate()
		reportData.OneMinuteSkipping.EachInfo[i].Boy.Score = oneMinuteSkippingScoreBoy[i].calculate()
		reportData.OneMinuteSkipping.EachInfo[i].Girl.Score = oneMinuteSkippingScoreGirl[i].calculate()
		reportData.OneMinuteSkipping.EachInfo[i].Avg.Score = oneMinuteSkippingScoreAvg[i].calculate()
		reportData.OneMinuteSkipping.EachInfo[i].Boy.Nums = oneMinuteSkippingDistribution4Boy[i].calculate3()
		reportData.OneMinuteSkipping.EachInfo[i].Boy.Percentage = oneMinuteSkippingDistribution4Boy[i].calculate2()
		reportData.OneMinuteSkipping.EachInfo[i].Girl.Nums = oneMinuteSkippingDistribution4Girl[i].calculate3()
		reportData.OneMinuteSkipping.EachInfo[i].Girl.Percentage = oneMinuteSkippingDistribution4Girl[i].calculate2()
		reportData.OneMinuteSkipping.EachInfo[i].Avg.Nums = oneMinuteSkippingDistribution4Avg[i].calculate3()
		reportData.OneMinuteSkipping.EachInfo[i].Avg.Percentage = oneMinuteSkippingDistribution4Avg[i].calculate2()
		reportData.Grip.EachInfo[i].Boy.Result = gripBoy[i].calculate()
		reportData.Grip.EachInfo[i].Girl.Result = gripGirl[i].calculate()
		reportData.Grip.EachInfo[i].Avg.Result = gripAvg[i].calculate()
		reportData.Grip.EachInfo[i].Boy.Nums = gripDistribution4Boy[i].calculate3()
		reportData.Grip.EachInfo[i].Boy.Percentage = gripDistribution4Boy[i].calculate2()
		reportData.Grip.EachInfo[i].Girl.Nums = gripDistribution4Girl[i].calculate3()
		reportData.Grip.EachInfo[i].Girl.Percentage = gripDistribution4Girl[i].calculate2()
		reportData.Grip.EachInfo[i].Avg.Nums = gripDistribution4Avg[i].calculate3()
		reportData.Grip.EachInfo[i].Avg.Percentage = gripDistribution4Avg[i].calculate2()
		reportData.ReactionSpeed.EachInfo[i].Boy.Result = reactionSpeedBoy[i].calculate()
		reportData.ReactionSpeed.EachInfo[i].Girl.Result = reactionSpeedGirl[i].calculate()
		reportData.ReactionSpeed.EachInfo[i].Avg.Result = reactionSpeedAvg[i].calculate()
		reportData.ReactionSpeed.EachInfo[i].Boy.Nums = reactionSpeedDistribution4Boy[i].calculate3()
		reportData.ReactionSpeed.EachInfo[i].Boy.Percentage = reactionSpeedDistribution4Boy[i].calculate2()
		reportData.ReactionSpeed.EachInfo[i].Girl.Nums = reactionSpeedDistribution4Girl[i].calculate3()
		reportData.ReactionSpeed.EachInfo[i].Girl.Percentage = reactionSpeedDistribution4Girl[i].calculate2()
		reportData.ReactionSpeed.EachInfo[i].Avg.Nums = reactionSpeedDistribution4Avg[i].calculate3()
		reportData.ReactionSpeed.EachInfo[i].Avg.Percentage = reactionSpeedDistribution4Avg[i].calculate2()
		reportData.BalanceAbility.EachInfo[i].Boy.Result = balanceAbilityBoy[i].calculate()
		reportData.BalanceAbility.EachInfo[i].Girl.Result = balanceAbilityGirl[i].calculate()
		reportData.BalanceAbility.EachInfo[i].Avg.Result = balanceAbilityAvg[i].calculate()
		reportData.BalanceAbility.EachInfo[i].Boy.Nums = balanceAbilityDistribution4Boy[i].calculate3()
		reportData.BalanceAbility.EachInfo[i].Boy.Percentage = balanceAbilityDistribution4Boy[i].calculate2()
		reportData.BalanceAbility.EachInfo[i].Girl.Nums = balanceAbilityDistribution4Girl[i].calculate3()
		reportData.BalanceAbility.EachInfo[i].Girl.Percentage = balanceAbilityDistribution4Girl[i].calculate2()
		reportData.BalanceAbility.EachInfo[i].Avg.Nums = balanceAbilityDistribution4Avg[i].calculate3()
		reportData.BalanceAbility.EachInfo[i].Avg.Percentage = balanceAbilityDistribution4Avg[i].calculate2()
	}
	reportData.BodyMassIndex.EachInfo[6].Boy.Result = bodyMassIndexBoy[6].calculate()
	reportData.BodyMassIndex.EachInfo[6].Girl.Result = bodyMassIndexGirl[6].calculate()
	reportData.BodyMassIndex.EachInfo[6].Avg.Result = bodyMassIndexAvg[6].calculate()
	reportData.BodyMassIndex.EachInfo[6].Boy.Score = bodyMassIndexScoreBoy[6].calculate()
	reportData.BodyMassIndex.EachInfo[6].Girl.Score = bodyMassIndexScoreGirl[6].calculate()
	reportData.BodyMassIndex.EachInfo[6].Avg.Score = bodyMassIndexScoreAvg[6].calculate()
	reportData.BodyMassIndex.EachInfo[6].Boy.Max = bodyMassIndexMaxBoy[6]
	reportData.BodyMassIndex.EachInfo[6].Boy.Min = bodyMassIndexMinBoy[6]
	reportData.BodyMassIndex.EachInfo[6].Girl.Max = bodyMassIndexMaxGirl[6]
	reportData.BodyMassIndex.EachInfo[6].Girl.Min = bodyMassIndexMinGirl[6]
	reportData.BodyMassIndex.EachInfo[6].Avg.Max = bodyMassIndexMaxAvg[6]
	reportData.BodyMassIndex.EachInfo[6].Avg.Min = bodyMassIndexMinAvg[6]
	reportData.BodyMassIndex.EachInfo[6].Boy.Percentage = bodyMassIndexDistribution4Boy[6].calculate1()
	reportData.BodyMassIndex.EachInfo[6].Girl.Percentage = bodyMassIndexDistribution4Girl[6].calculate1()
	reportData.BodyMassIndex.EachInfo[6].Avg.Percentage = bodyMassIndexDistribution4Avg[6].calculate1()
	reportData.BodyFat.EachInfo[6].Boy.Result = bodyFatBoy[6].calculate()
	reportData.BodyFat.EachInfo[6].Girl.Result = bodyFatGirl[6].calculate()
	reportData.BodyFat.EachInfo[6].Avg.Result = bodyFatAvg[6].calculate()
	reportData.BodyFat.EachInfo[6].Boy.Standard = bodyFatDistribution4Boy[6].calculateCustom(1)
	reportData.BodyFat.EachInfo[6].Boy.Excess = bodyFatDistribution4Boy[6].calculateCustom(2)
	reportData.BodyFat.EachInfo[6].Boy.LowStandard = bodyFatDistribution4Boy[6].calculateCustom(3)
	reportData.BodyFat.EachInfo[6].Girl.Standard = bodyFatDistribution4Girl[6].calculateCustom(1)
	reportData.BodyFat.EachInfo[6].Girl.Excess = bodyFatDistribution4Girl[6].calculateCustom(2)
	reportData.BodyFat.EachInfo[6].Girl.LowStandard = bodyFatDistribution4Girl[6].calculateCustom(3)
	reportData.BodyFat.EachInfo[6].Avg.Standard = bodyFatDistribution4Avg[6].calculateCustom(1)
	reportData.BodyFat.EachInfo[6].Avg.Excess = bodyFatDistribution4Avg[6].calculateCustom(2)
	reportData.BodyFat.EachInfo[6].Avg.LowStandard = bodyFatDistribution4Avg[6].calculateCustom(3)
	reportData.VitalCapacity.EachInfo[6].Boy.Result = vitalCapacityBoy[6].calculate()
	reportData.VitalCapacity.EachInfo[6].Girl.Result = vitalCapacityGirl[6].calculate()
	reportData.VitalCapacity.EachInfo[6].Avg.Result = vitalCapacityAvg[6].calculate()
	reportData.VitalCapacity.EachInfo[6].Boy.Score = vitalCapacityScoreBoy[6].calculate()
	reportData.VitalCapacity.EachInfo[6].Girl.Score = vitalCapacityScoreGirl[6].calculate()
	reportData.VitalCapacity.EachInfo[6].Avg.Score = vitalCapacityScoreAvg[6].calculate()
	reportData.VitalCapacity.EachInfo[6].Boy.Nums = vitalCapacityDistribution4Boy[6].calculate3()
	reportData.VitalCapacity.EachInfo[6].Boy.Percentage = vitalCapacityDistribution4Boy[6].calculate2()
	reportData.VitalCapacity.EachInfo[6].Girl.Nums = vitalCapacityDistribution4Girl[6].calculate3()
	reportData.VitalCapacity.EachInfo[6].Girl.Percentage = vitalCapacityDistribution4Girl[6].calculate2()
	reportData.VitalCapacity.EachInfo[6].Avg.Nums = vitalCapacityDistribution4Avg[6].calculate3()
	reportData.VitalCapacity.EachInfo[6].Avg.Percentage = vitalCapacityDistribution4Avg[6].calculate2()
	reportData.FiftyMeter.EachInfo[6].Boy.Result = fiftyMetersBoy[6].calculate()
	reportData.FiftyMeter.EachInfo[6].Girl.Result = fiftyMetersGirl[6].calculate()
	reportData.FiftyMeter.EachInfo[6].Avg.Result = fiftyMetersAvg[6].calculate()
	reportData.FiftyMeter.EachInfo[6].Boy.Score = fiftyMetersScoreBoy[6].calculate()
	reportData.FiftyMeter.EachInfo[6].Girl.Score = fiftyMetersScoreGirl[6].calculate()
	reportData.FiftyMeter.EachInfo[6].Avg.Score = fiftyMetersScoreAvg[6].calculate()
	reportData.FiftyMeter.EachInfo[6].Boy.Nums = fiftyMetersDistribution4Boy[6].calculate3()
	reportData.FiftyMeter.EachInfo[6].Boy.Percentage = fiftyMetersDistribution4Boy[6].calculate2()
	reportData.FiftyMeter.EachInfo[6].Girl.Nums = fiftyMetersDistribution4Girl[6].calculate3()
	reportData.FiftyMeter.EachInfo[6].Girl.Percentage = fiftyMetersDistribution4Girl[6].calculate2()
	reportData.FiftyMeter.EachInfo[6].Avg.Nums = fiftyMetersDistribution4Avg[6].calculate3()
	reportData.FiftyMeter.EachInfo[6].Avg.Percentage = fiftyMetersDistribution4Avg[6].calculate2()
	reportData.SitAndReach.EachInfo[6].Boy.Result = sitAndReachBoy[6].calculate()
	reportData.SitAndReach.EachInfo[6].Girl.Result = sitAndReachGirl[6].calculate()
	reportData.SitAndReach.EachInfo[6].Avg.Result = sitAndReachAvg[6].calculate()
	reportData.SitAndReach.EachInfo[6].Boy.Score = sitAndReachScoreBoy[6].calculate()
	reportData.SitAndReach.EachInfo[6].Girl.Score = sitAndReachScoreGirl[6].calculate()
	reportData.SitAndReach.EachInfo[6].Avg.Score = sitAndReachScoreAvg[6].calculate()
	reportData.SitAndReach.EachInfo[6].Boy.Nums = sitAndReachDistribution4Boy[6].calculate3()
	reportData.SitAndReach.EachInfo[6].Boy.Percentage = sitAndReachDistribution4Boy[6].calculate2()
	reportData.SitAndReach.EachInfo[6].Girl.Nums = sitAndReachDistribution4Girl[6].calculate3()
	reportData.SitAndReach.EachInfo[6].Girl.Percentage = sitAndReachDistribution4Girl[6].calculate2()
	reportData.SitAndReach.EachInfo[6].Avg.Nums = sitAndReachDistribution4Avg[6].calculate3()
	reportData.SitAndReach.EachInfo[6].Avg.Percentage = sitAndReachDistribution4Avg[6].calculate2()
	reportData.OneMinuteSkipping.EachInfo[6].Boy.Result = oneMinuteSkippingBoy[6].calculate()
	reportData.OneMinuteSkipping.EachInfo[6].Girl.Result = oneMinuteSkippingGirl[6].calculate()
	reportData.OneMinuteSkipping.EachInfo[6].Avg.Result = oneMinuteSkippingAvg[6].calculate()
	reportData.OneMinuteSkipping.EachInfo[6].Boy.Score = oneMinuteSkippingScoreBoy[6].calculate()
	reportData.OneMinuteSkipping.EachInfo[6].Girl.Score = oneMinuteSkippingScoreGirl[6].calculate()
	reportData.OneMinuteSkipping.EachInfo[6].Avg.Score = oneMinuteSkippingScoreAvg[6].calculate()
	reportData.OneMinuteSkipping.EachInfo[6].Boy.Nums = oneMinuteSkippingDistribution4Boy[6].calculate3()
	reportData.OneMinuteSkipping.EachInfo[6].Boy.Percentage = oneMinuteSkippingDistribution4Boy[6].calculate2()
	reportData.OneMinuteSkipping.EachInfo[6].Girl.Nums = oneMinuteSkippingDistribution4Girl[6].calculate3()
	reportData.OneMinuteSkipping.EachInfo[6].Girl.Percentage = oneMinuteSkippingDistribution4Girl[6].calculate2()
	reportData.OneMinuteSkipping.EachInfo[6].Avg.Nums = oneMinuteSkippingDistribution4Avg[6].calculate3()
	reportData.OneMinuteSkipping.EachInfo[6].Avg.Percentage = oneMinuteSkippingDistribution4Avg[6].calculate2()
	reportData.OneMinuteSitUps.EachInfo[0].Boy.Result = oneMinuteSitUpsBoy[2].calculate()
	reportData.OneMinuteSitUps.EachInfo[0].Girl.Result = oneMinuteSitUpsGirl[2].calculate()
	reportData.OneMinuteSitUps.EachInfo[0].Avg.Result = oneMinuteSitUpsAvg[2].calculate()
	reportData.OneMinuteSitUps.EachInfo[0].Boy.Score = oneMinuteSitUpsScoreBoy[2].calculate()
	reportData.OneMinuteSitUps.EachInfo[0].Girl.Score = oneMinuteSitUpsScoreGirl[2].calculate()
	reportData.OneMinuteSitUps.EachInfo[0].Avg.Score = oneMinuteSitUpsScoreAvg[2].calculate()
	reportData.OneMinuteSitUps.EachInfo[0].Boy.Nums = oneMinuteSitUpsDistribution4Boy[2].calculate3()
	reportData.OneMinuteSitUps.EachInfo[0].Boy.Percentage = oneMinuteSitUpsDistribution4Boy[2].calculate2()
	reportData.OneMinuteSitUps.EachInfo[0].Girl.Nums = oneMinuteSitUpsDistribution4Girl[2].calculate3()
	reportData.OneMinuteSitUps.EachInfo[0].Girl.Percentage = oneMinuteSitUpsDistribution4Girl[2].calculate2()
	reportData.OneMinuteSitUps.EachInfo[0].Avg.Nums = oneMinuteSitUpsDistribution4Avg[2].calculate3()
	reportData.OneMinuteSitUps.EachInfo[0].Avg.Percentage = oneMinuteSitUpsDistribution4Avg[2].calculate2()
	reportData.OneMinuteSitUps.EachInfo[1].Boy.Result = oneMinuteSitUpsBoy[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[1].Girl.Result = oneMinuteSitUpsGirl[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[1].Avg.Result = oneMinuteSitUpsAvg[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[1].Boy.Score = oneMinuteSitUpsScoreBoy[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[1].Girl.Score = oneMinuteSitUpsScoreGirl[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[1].Avg.Score = oneMinuteSitUpsScoreAvg[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[1].Boy.Nums = oneMinuteSitUpsDistribution4Boy[3].calculate3()
	reportData.OneMinuteSitUps.EachInfo[1].Boy.Percentage = oneMinuteSitUpsDistribution4Boy[3].calculate2()
	reportData.OneMinuteSitUps.EachInfo[1].Girl.Nums = oneMinuteSitUpsDistribution4Girl[3].calculate3()
	reportData.OneMinuteSitUps.EachInfo[1].Girl.Percentage = oneMinuteSitUpsDistribution4Girl[3].calculate2()
	reportData.OneMinuteSitUps.EachInfo[1].Avg.Nums = oneMinuteSitUpsDistribution4Avg[3].calculate3()
	reportData.OneMinuteSitUps.EachInfo[1].Avg.Percentage = oneMinuteSitUpsDistribution4Avg[3].calculate2()
	reportData.OneMinuteSitUps.EachInfo[2].Boy.Result = oneMinuteSitUpsBoy[4].calculate()
	reportData.OneMinuteSitUps.EachInfo[2].Girl.Result = oneMinuteSitUpsGirl[4].calculate()
	reportData.OneMinuteSitUps.EachInfo[2].Avg.Result = oneMinuteSitUpsAvg[4].calculate()
	reportData.OneMinuteSitUps.EachInfo[2].Boy.Score = oneMinuteSitUpsScoreBoy[4].calculate()
	reportData.OneMinuteSitUps.EachInfo[2].Girl.Score = oneMinuteSitUpsScoreGirl[4].calculate()
	reportData.OneMinuteSitUps.EachInfo[2].Avg.Score = oneMinuteSitUpsScoreAvg[4].calculate()
	reportData.OneMinuteSitUps.EachInfo[2].Boy.Nums = oneMinuteSitUpsDistribution4Boy[4].calculate3()
	reportData.OneMinuteSitUps.EachInfo[2].Boy.Percentage = oneMinuteSitUpsDistribution4Boy[4].calculate2()
	reportData.OneMinuteSitUps.EachInfo[2].Girl.Nums = oneMinuteSitUpsDistribution4Girl[4].calculate3()
	reportData.OneMinuteSitUps.EachInfo[2].Girl.Percentage = oneMinuteSitUpsDistribution4Girl[4].calculate2()
	reportData.OneMinuteSitUps.EachInfo[2].Avg.Nums = oneMinuteSitUpsDistribution4Avg[4].calculate3()
	reportData.OneMinuteSitUps.EachInfo[2].Avg.Percentage = oneMinuteSitUpsDistribution4Avg[4].calculate2()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Result = oneMinuteSitUpsBoy[5].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Result = oneMinuteSitUpsGirl[5].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Result = oneMinuteSitUpsAvg[5].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Score = oneMinuteSitUpsScoreBoy[5].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Score = oneMinuteSitUpsScoreGirl[5].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Score = oneMinuteSitUpsScoreAvg[5].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Nums = oneMinuteSitUpsDistribution4Boy[5].calculate3()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Percentage = oneMinuteSitUpsDistribution4Boy[5].calculate2()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Nums = oneMinuteSitUpsDistribution4Girl[5].calculate3()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Percentage = oneMinuteSitUpsDistribution4Girl[5].calculate2()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Nums = oneMinuteSitUpsDistribution4Avg[5].calculate3()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Percentage = oneMinuteSitUpsDistribution4Avg[5].calculate2()
	reportData.OneMinuteSitUps.EachInfo[4].Boy.Result = oneMinuteSitUpsBoy[6].calculate()
	reportData.OneMinuteSitUps.EachInfo[4].Girl.Result = oneMinuteSitUpsGirl[6].calculate()
	reportData.OneMinuteSitUps.EachInfo[4].Avg.Result = oneMinuteSitUpsAvg[6].calculate()
	reportData.OneMinuteSitUps.EachInfo[4].Boy.Score = oneMinuteSitUpsScoreBoy[6].calculate()
	reportData.OneMinuteSitUps.EachInfo[4].Girl.Score = oneMinuteSitUpsScoreGirl[6].calculate()
	reportData.OneMinuteSitUps.EachInfo[4].Avg.Score = oneMinuteSitUpsScoreAvg[6].calculate()
	reportData.OneMinuteSitUps.EachInfo[4].Boy.Nums = oneMinuteSitUpsDistribution4Boy[6].calculate3()
	reportData.OneMinuteSitUps.EachInfo[4].Boy.Percentage = oneMinuteSitUpsDistribution4Boy[6].calculate2()
	reportData.OneMinuteSitUps.EachInfo[4].Girl.Nums = oneMinuteSitUpsDistribution4Girl[6].calculate3()
	reportData.OneMinuteSitUps.EachInfo[4].Girl.Percentage = oneMinuteSitUpsDistribution4Girl[6].calculate2()
	reportData.OneMinuteSitUps.EachInfo[4].Avg.Nums = oneMinuteSitUpsDistribution4Avg[6].calculate3()
	reportData.OneMinuteSitUps.EachInfo[4].Avg.Percentage = oneMinuteSitUpsDistribution4Avg[6].calculate2()
	reportData.ShuttleRun.EachInfo[0].Boy.Result = shuttleRunBoy[4].calculate()
	reportData.ShuttleRun.EachInfo[0].Girl.Result = shuttleRunGirl[4].calculate()
	reportData.ShuttleRun.EachInfo[0].Avg.Result = shuttleRunAvg[4].calculate()
	reportData.ShuttleRun.EachInfo[0].Boy.Score = shuttleRunScoreBoy[4].calculate()
	reportData.ShuttleRun.EachInfo[0].Girl.Score = shuttleRunScoreGirl[4].calculate()
	reportData.ShuttleRun.EachInfo[0].Avg.Score = shuttleRunScoreAvg[4].calculate()
	reportData.ShuttleRun.EachInfo[0].Boy.Nums = shuttleRunDistribution4Boy[4].calculate3()
	reportData.ShuttleRun.EachInfo[0].Boy.Percentage = shuttleRunDistribution4Boy[4].calculate2()
	reportData.ShuttleRun.EachInfo[0].Girl.Nums = shuttleRunDistribution4Girl[4].calculate3()
	reportData.ShuttleRun.EachInfo[0].Girl.Percentage = shuttleRunDistribution4Girl[4].calculate2()
	reportData.ShuttleRun.EachInfo[0].Avg.Nums = shuttleRunDistribution4Avg[4].calculate3()
	reportData.ShuttleRun.EachInfo[0].Avg.Percentage = shuttleRunDistribution4Avg[4].calculate2()
	reportData.ShuttleRun.EachInfo[1].Boy.Result = shuttleRunBoy[5].calculate()
	reportData.ShuttleRun.EachInfo[1].Girl.Result = shuttleRunGirl[5].calculate()
	reportData.ShuttleRun.EachInfo[1].Avg.Result = shuttleRunAvg[5].calculate()
	reportData.ShuttleRun.EachInfo[1].Boy.Score = shuttleRunScoreBoy[5].calculate()
	reportData.ShuttleRun.EachInfo[1].Girl.Score = shuttleRunScoreGirl[5].calculate()
	reportData.ShuttleRun.EachInfo[1].Avg.Score = shuttleRunScoreAvg[5].calculate()
	reportData.ShuttleRun.EachInfo[1].Boy.Nums = shuttleRunDistribution4Boy[5].calculate3()
	reportData.ShuttleRun.EachInfo[1].Boy.Percentage = shuttleRunDistribution4Boy[5].calculate2()
	reportData.ShuttleRun.EachInfo[1].Girl.Nums = shuttleRunDistribution4Girl[5].calculate3()
	reportData.ShuttleRun.EachInfo[1].Girl.Percentage = shuttleRunDistribution4Girl[5].calculate2()
	reportData.ShuttleRun.EachInfo[1].Avg.Nums = shuttleRunDistribution4Avg[5].calculate3()
	reportData.ShuttleRun.EachInfo[1].Avg.Percentage = shuttleRunDistribution4Avg[5].calculate2()
	reportData.ShuttleRun.EachInfo[2].Boy.Result = shuttleRunBoy[6].calculate()
	reportData.ShuttleRun.EachInfo[2].Girl.Result = shuttleRunGirl[6].calculate()
	reportData.ShuttleRun.EachInfo[2].Avg.Result = shuttleRunAvg[6].calculate()
	reportData.ShuttleRun.EachInfo[2].Boy.Score = shuttleRunScoreBoy[6].calculate()
	reportData.ShuttleRun.EachInfo[2].Girl.Score = shuttleRunScoreGirl[6].calculate()
	reportData.ShuttleRun.EachInfo[2].Avg.Score = shuttleRunScoreAvg[6].calculate()
	reportData.ShuttleRun.EachInfo[2].Boy.Nums = shuttleRunDistribution4Boy[6].calculate3()
	reportData.ShuttleRun.EachInfo[2].Boy.Percentage = shuttleRunDistribution4Boy[6].calculate2()
	reportData.ShuttleRun.EachInfo[2].Girl.Nums = shuttleRunDistribution4Girl[6].calculate3()
	reportData.ShuttleRun.EachInfo[2].Girl.Percentage = shuttleRunDistribution4Girl[6].calculate2()
	reportData.ShuttleRun.EachInfo[2].Avg.Nums = shuttleRunDistribution4Avg[6].calculate3()
	reportData.ShuttleRun.EachInfo[2].Avg.Percentage = shuttleRunDistribution4Avg[6].calculate2()
	reportData.Grip.EachInfo[6].Boy.Result = gripBoy[6].calculate()
	reportData.Grip.EachInfo[6].Girl.Result = gripGirl[6].calculate()
	reportData.Grip.EachInfo[6].Avg.Result = gripAvg[6].calculate()
	reportData.Grip.EachInfo[6].Boy.Nums = gripDistribution4Boy[6].calculate3()
	reportData.Grip.EachInfo[6].Boy.Percentage = gripDistribution4Boy[6].calculate2()
	reportData.Grip.EachInfo[6].Girl.Nums = gripDistribution4Girl[6].calculate3()
	reportData.Grip.EachInfo[6].Girl.Percentage = gripDistribution4Girl[6].calculate2()
	reportData.Grip.EachInfo[6].Avg.Nums = gripDistribution4Avg[6].calculate3()
	reportData.Grip.EachInfo[6].Avg.Percentage = gripDistribution4Avg[6].calculate2()
	reportData.ReactionSpeed.EachInfo[6].Boy.Result = reactionSpeedBoy[6].calculate()
	reportData.ReactionSpeed.EachInfo[6].Girl.Result = reactionSpeedGirl[6].calculate()
	reportData.ReactionSpeed.EachInfo[6].Avg.Result = reactionSpeedAvg[6].calculate()
	reportData.ReactionSpeed.EachInfo[6].Boy.Nums = reactionSpeedDistribution4Boy[6].calculate3()
	reportData.ReactionSpeed.EachInfo[6].Boy.Percentage = reactionSpeedDistribution4Boy[6].calculate2()
	reportData.ReactionSpeed.EachInfo[6].Girl.Nums = reactionSpeedDistribution4Girl[6].calculate3()
	reportData.ReactionSpeed.EachInfo[6].Girl.Percentage = reactionSpeedDistribution4Girl[6].calculate2()
	reportData.ReactionSpeed.EachInfo[6].Avg.Nums = reactionSpeedDistribution4Avg[6].calculate3()
	reportData.ReactionSpeed.EachInfo[6].Avg.Percentage = reactionSpeedDistribution4Avg[6].calculate2()
	reportData.VerticalJump.EachInfo[0].Boy.Result = verticalJumpBoy[2].calculate()
	reportData.VerticalJump.EachInfo[0].Girl.Result = verticalJumpGirl[2].calculate()
	reportData.VerticalJump.EachInfo[0].Avg.Result = verticalJumpAvg[2].calculate()
	reportData.VerticalJump.EachInfo[0].Boy.Nums = verticalJumpDistribution4Boy[2].calculate3()
	reportData.VerticalJump.EachInfo[0].Boy.Percentage = verticalJumpDistribution4Boy[2].calculate2()
	reportData.VerticalJump.EachInfo[0].Girl.Nums = verticalJumpDistribution4Girl[2].calculate3()
	reportData.VerticalJump.EachInfo[0].Girl.Percentage = verticalJumpDistribution4Girl[2].calculate2()
	reportData.VerticalJump.EachInfo[0].Avg.Nums = verticalJumpDistribution4Avg[2].calculate3()
	reportData.VerticalJump.EachInfo[0].Avg.Percentage = verticalJumpDistribution4Avg[2].calculate2()
	reportData.VerticalJump.EachInfo[1].Boy.Result = verticalJumpBoy[3].calculate()
	reportData.VerticalJump.EachInfo[1].Girl.Result = verticalJumpGirl[3].calculate()
	reportData.VerticalJump.EachInfo[1].Avg.Result = verticalJumpAvg[3].calculate()
	reportData.VerticalJump.EachInfo[1].Boy.Nums = verticalJumpDistribution4Boy[3].calculate3()
	reportData.VerticalJump.EachInfo[1].Boy.Percentage = verticalJumpDistribution4Boy[3].calculate2()
	reportData.VerticalJump.EachInfo[1].Girl.Nums = verticalJumpDistribution4Girl[3].calculate3()
	reportData.VerticalJump.EachInfo[1].Girl.Percentage = verticalJumpDistribution4Girl[3].calculate2()
	reportData.VerticalJump.EachInfo[1].Avg.Nums = verticalJumpDistribution4Avg[3].calculate3()
	reportData.VerticalJump.EachInfo[1].Avg.Percentage = verticalJumpDistribution4Avg[3].calculate2()
	reportData.VerticalJump.EachInfo[2].Boy.Result = verticalJumpBoy[4].calculate()
	reportData.VerticalJump.EachInfo[2].Girl.Result = verticalJumpGirl[4].calculate()
	reportData.VerticalJump.EachInfo[2].Avg.Result = verticalJumpAvg[4].calculate()
	reportData.VerticalJump.EachInfo[2].Boy.Nums = verticalJumpDistribution4Boy[4].calculate3()
	reportData.VerticalJump.EachInfo[2].Boy.Percentage = verticalJumpDistribution4Boy[4].calculate2()
	reportData.VerticalJump.EachInfo[2].Girl.Nums = verticalJumpDistribution4Girl[4].calculate3()
	reportData.VerticalJump.EachInfo[2].Girl.Percentage = verticalJumpDistribution4Girl[4].calculate2()
	reportData.VerticalJump.EachInfo[2].Avg.Nums = verticalJumpDistribution4Avg[4].calculate3()
	reportData.VerticalJump.EachInfo[2].Avg.Percentage = verticalJumpDistribution4Avg[4].calculate2()
	reportData.VerticalJump.EachInfo[3].Boy.Result = verticalJumpBoy[5].calculate()
	reportData.VerticalJump.EachInfo[3].Girl.Result = verticalJumpGirl[5].calculate()
	reportData.VerticalJump.EachInfo[3].Avg.Result = verticalJumpAvg[5].calculate()
	reportData.VerticalJump.EachInfo[3].Boy.Nums = verticalJumpDistribution4Boy[5].calculate3()
	reportData.VerticalJump.EachInfo[3].Boy.Percentage = verticalJumpDistribution4Boy[5].calculate2()
	reportData.VerticalJump.EachInfo[3].Girl.Nums = verticalJumpDistribution4Girl[5].calculate3()
	reportData.VerticalJump.EachInfo[3].Girl.Percentage = verticalJumpDistribution4Girl[5].calculate2()
	reportData.VerticalJump.EachInfo[3].Avg.Nums = verticalJumpDistribution4Avg[5].calculate3()
	reportData.VerticalJump.EachInfo[3].Avg.Percentage = verticalJumpDistribution4Avg[5].calculate2()
	reportData.VerticalJump.EachInfo[4].Boy.Result = verticalJumpBoy[6].calculate()
	reportData.VerticalJump.EachInfo[4].Girl.Result = verticalJumpGirl[6].calculate()
	reportData.VerticalJump.EachInfo[4].Avg.Result = verticalJumpAvg[6].calculate()
	reportData.VerticalJump.EachInfo[4].Boy.Nums = verticalJumpDistribution4Boy[6].calculate3()
	reportData.VerticalJump.EachInfo[4].Boy.Percentage = verticalJumpDistribution4Boy[6].calculate2()
	reportData.VerticalJump.EachInfo[4].Girl.Nums = verticalJumpDistribution4Girl[6].calculate3()
	reportData.VerticalJump.EachInfo[4].Girl.Percentage = verticalJumpDistribution4Girl[6].calculate2()
	reportData.VerticalJump.EachInfo[4].Avg.Nums = verticalJumpDistribution4Avg[6].calculate3()
	reportData.VerticalJump.EachInfo[4].Avg.Percentage = verticalJumpDistribution4Avg[6].calculate2()
	reportData.BalanceAbility.EachInfo[6].Boy.Result = balanceAbilityBoy[6].calculate()
	reportData.BalanceAbility.EachInfo[6].Girl.Result = balanceAbilityGirl[6].calculate()
	reportData.BalanceAbility.EachInfo[6].Avg.Result = balanceAbilityAvg[6].calculate()
	reportData.BalanceAbility.EachInfo[6].Boy.Nums = balanceAbilityDistribution4Boy[6].calculate3()
	reportData.BalanceAbility.EachInfo[6].Boy.Percentage = balanceAbilityDistribution4Boy[6].calculate2()
	reportData.BalanceAbility.EachInfo[6].Girl.Nums = balanceAbilityDistribution4Girl[6].calculate3()
	reportData.BalanceAbility.EachInfo[6].Girl.Percentage = balanceAbilityDistribution4Girl[6].calculate2()
	reportData.BalanceAbility.EachInfo[6].Avg.Nums = balanceAbilityDistribution4Avg[6].calculate3()
	reportData.BalanceAbility.EachInfo[6].Avg.Percentage = balanceAbilityDistribution4Avg[6].calculate2()
	data, err := json.Marshal(reportData)
	return err, string(data)
}

func generateHighReport(school *entity.School, measurementDate time.Time) (err error, jsonStr string) {
	reportData := High{}
	if entity.SchoolTypeMapCode[school.SchoolType] == "初" {
		err = reportData.JuniorInit(school, measurementDate)
		if err != nil {
			return err, ""
		}
	} else if entity.SchoolTypeMapCode[school.SchoolType] == "高" {
		err = reportData.SeniorInit(school, measurementDate)
		if err != nil {
			return err, ""
		}
	}
	var scores []entity.Score
	_, err = nspel.GetOrmEngine().QueryTable("score").Filter("school_id", school.Id).Filter("measurement_date", measurementDate.Format("2006-01-02")).All(&scores)
	if err != nil {
		return err, ""
	}
	var scoreAvg, boyScoreAvg, girlScoreAvg avg
	var heightAvg, heightBoy, heightGirl [3]avg
	var weightAvg, weightBoy, weightGirl [3]avg
	var bodyMassIndexAvg, bodyMassIndexBoy, bodyMassIndexGirl, bodyMassIndexScoreAvg, bodyMassIndexScoreBoy, bodyMassIndexScoreGirl [4]avg
	var bodyFatAvg, bodyFatBoy, bodyFatGirl [4]avg
	var vitalCapacityAvg, vitalCapacityBoy, vitalCapacityGirl, vitalCapacityScoreAvg, vitalCapacityScoreBoy, vitalCapacityScoreGirl [4]avg
	var fiftyMetersAvg, fiftyMetersBoy, fiftyMetersGirl, fiftyMetersScoreAvg, fiftyMetersScoreBoy, fiftyMetersScoreGirl [4]avg
	var sitAndReachAvg, sitAndReachBoy, sitAndReachGirl, sitAndReachScoreAvg, sitAndReachScoreBoy, sitAndReachScoreGirl [4]avg
	var standingLongJumpAvg, standingLongJumpBoy, standingLongJumpGirl, standingLongJumpScoreAvg, standingLongJumpScoreBoy, standingLongJumpScoreGirl [4]avg
	var oneMinuteSitUpsAvg, oneMinuteSitUpsBoy, oneMinuteSitUpsGirl, oneMinuteSitUpsScoreAvg, oneMinuteSitUpsScoreBoy, oneMinuteSitUpsScoreGirl [4]avg
	var enduranceRunAvg, enduranceRunBoy, enduranceRunGirl, enduranceRunScoreAvg, enduranceRunScoreBoy, enduranceRunScoreGirl [4]avg
	var gripAvg, gripBoy, gripGirl [4]avg
	var reactionSpeedAvg, reactionSpeedBoy, reactionSpeedGirl [4]avg
	var verticalJumpAvg, verticalJumpBoy, verticalJumpGirl [4]avg
	var balanceAbilityAvg, balanceAbilityBoy, balanceAbilityGirl [4]avg
	var bodyMassIndexMaxBoy, bodyMassIndexMaxGirl, bodyMassIndexMaxAvg [4]float64
	var bodyMassIndexMinBoy, bodyMassIndexMinGirl, bodyMassIndexMinAvg [4]float64
	bodyMassIndexMaxBoy = [4]float64{math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64}
	bodyMassIndexMaxGirl = [4]float64{math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64}
	bodyMassIndexMaxAvg = [4]float64{math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64}
	bodyMassIndexMinBoy = [4]float64{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64}
	bodyMassIndexMinGirl = [4]float64{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64}
	bodyMassIndexMinAvg = [4]float64{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64, math.MaxFloat64}
	var boyDistribution4, girlDistribution4, avgDistribution4 distribution4
	var bodyMassIndexDistribution4Boy, bodyMassIndexDistribution4Girl, bodyMassIndexDistribution4Avg [4]distribution4
	var bodyFatDistribution4Boy, bodyFatDistribution4Girl, bodyFatDistribution4Avg [4]distribution4
	var vitalCapacityDistribution4Avg, vitalCapacityDistribution4Boy, vitalCapacityDistribution4Girl [4]distribution4
	var fiftyMetersDistribution4Avg, fiftyMetersDistribution4Boy, fiftyMetersDistribution4Girl [4]distribution4
	var sitAndReachDistribution4Avg, sitAndReachDistribution4Boy, sitAndReachDistribution4Girl [4]distribution4
	var standingLongJumpDistribution4Avg, standingLongJumpDistribution4Boy, standingLongJumpDistribution4Girl [4]distribution4
	var oneMinuteSitUpsDistribution4Avg, oneMinuteSitUpsDistribution4Boy, oneMinuteSitUpsDistribution4Girl [4]distribution4
	var enduranceRunDistribution4Avg, enduranceRunDistribution4Boy, enduranceRunDistribution4Girl [4]distribution4
	var gripDistribution4Avg, gripDistribution4Boy, gripDistribution4Girl [4]distribution4
	var reactionSpeedDistribution4Avg, reactionSpeedDistribution4Boy, reactionSpeedDistribution4Girl [4]distribution4
	var verticalJumpDistribution4Avg, verticalJumpDistribution4Boy, verticalJumpDistribution4Girl [4]distribution4
	var balanceAbilityDistribution4Avg, balanceAbilityDistribution4Boy, balanceAbilityDistribution4Girl [4]distribution4
	for i := 0; i < len(scores); i++ {
		if scores[i].MissingTestNum == 0 {
			scoreAvg.add(scores[i].PhysicalTotalScore.Float64)
			avgDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				boyScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				boyDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				girlScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				girlDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			}
		}
		grade, _ := strconv.ParseInt(scores[i].Grade[1:2], 10, 64)
		grade = grade - 1
		if scores[i].Sex == 1 {
			reportData.StudentNum.EachInfo[grade].Boy++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					reportData.StudentNum.EachInfo[grade].BoyPrivilege++
				} else {
					reportData.StudentNum.EachInfo[grade].BoyAbsent++
				}
			}
		} else if scores[i].Sex == 2 {
			reportData.StudentNum.EachInfo[grade].Girl++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					reportData.StudentNum.EachInfo[grade].GirlPrivilege++
				} else {
					reportData.StudentNum.EachInfo[grade].GirlAbsent++
				}
			}
		}
		if scores[i].Height.Valid {
			heightAvg[grade].add(scores[i].Height.Float64)
			if scores[i].Sex == 1 {
				heightBoy[grade].add(scores[i].Height.Float64)
			} else if scores[i].Sex == 2 {
				heightGirl[grade].add(scores[i].Height.Float64)
			}
		}
		if scores[i].Weight.Valid {
			weightAvg[grade].add(scores[i].Weight.Float64)
			if scores[i].Sex == 1 {
				weightBoy[grade].add(scores[i].Weight.Float64)
			} else if scores[i].Sex == 2 {
				weightGirl[grade].add(scores[i].Weight.Float64)
			}
		}
		if scores[i].BodyMassIndex.Valid {
			bodyMassIndexAvg[3].add(scores[i].BodyMassIndex.Float64)
			bodyMassIndexAvg[grade].add(scores[i].BodyMassIndex.Float64)
			bodyMassIndexScoreAvg[3].add(scores[i].BodyMassIndexTotalScore.Float64)
			bodyMassIndexScoreAvg[grade].add(scores[i].BodyMassIndexTotalScore.Float64)
			bodyMassIndexMaxAvg[3] = math.Max(bodyMassIndexMaxAvg[3], scores[i].BodyMassIndex.Float64)
			bodyMassIndexMaxAvg[grade] = math.Max(bodyMassIndexMaxAvg[grade], scores[i].BodyMassIndex.Float64)
			bodyMassIndexMinAvg[3] = math.Min(bodyMassIndexMinAvg[3], scores[i].BodyMassIndex.Float64)
			bodyMassIndexMinAvg[grade] = math.Min(bodyMassIndexMinAvg[grade], scores[i].BodyMassIndex.Float64)
			bodyMassIndexDistribution4Avg[3].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			bodyMassIndexDistribution4Avg[grade].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			if scores[i].Sex == 1 {
				bodyMassIndexBoy[3].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexBoy[grade].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexScoreBoy[3].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexScoreBoy[grade].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexMaxBoy[3] = math.Max(bodyMassIndexMaxBoy[3], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMaxBoy[grade] = math.Max(bodyMassIndexMaxBoy[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinBoy[3] = math.Min(bodyMassIndexMinBoy[3], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinBoy[grade] = math.Min(bodyMassIndexMinBoy[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexDistribution4Boy[3].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
				bodyMassIndexDistribution4Boy[grade].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			} else if scores[i].Sex == 2 {
				bodyMassIndexGirl[grade].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexGirl[3].add(scores[i].BodyMassIndex.Float64)
				bodyMassIndexScoreGirl[3].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexScoreGirl[grade].add(scores[i].BodyMassIndexTotalScore.Float64)
				bodyMassIndexMaxGirl[3] = math.Max(bodyMassIndexMaxGirl[3], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMaxGirl[grade] = math.Max(bodyMassIndexMaxGirl[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinGirl[3] = math.Min(bodyMassIndexMinGirl[3], scores[i].BodyMassIndex.Float64)
				bodyMassIndexMinGirl[grade] = math.Min(bodyMassIndexMinGirl[grade], scores[i].BodyMassIndex.Float64)
				bodyMassIndexDistribution4Girl[3].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
				bodyMassIndexDistribution4Girl[grade].add4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重")
			}
		}
		if scores[i].BodyFat.Valid {
			reportData.SchoolInfo.HasExtension = true
			bodyFatAvg[grade].add(scores[i].BodyFat.Float64)
			bodyFatAvg[3].add(scores[i].BodyFat.Float64)
			bodyFatDistribution4Avg[grade].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			bodyFatDistribution4Avg[3].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			if scores[i].Sex == 1 {
				bodyFatBoy[grade].add(scores[i].BodyFat.Float64)
				bodyFatBoy[3].add(scores[i].BodyFat.Float64)
				bodyFatDistribution4Boy[grade].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
				bodyFatDistribution4Boy[3].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			} else if scores[i].Sex == 2 {
				bodyFatGirl[grade].add(scores[i].BodyFat.Float64)
				bodyFatGirl[3].add(scores[i].BodyFat.Float64)
				bodyFatDistribution4Girl[grade].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
				bodyFatDistribution4Girl[3].add3(scores[i].BodyFatLevel.String, "标准", "超标准", "低标准")
			}
		}
		if scores[i].VitalCapacity.Valid {
			vitalCapacityAvg[grade].add(scores[i].VitalCapacity.Float64)
			vitalCapacityAvg[3].add(scores[i].VitalCapacity.Float64)
			vitalCapacityScoreAvg[grade].add(scores[i].VitalCapacityTotalScore.Float64)
			vitalCapacityScoreAvg[3].add(scores[i].VitalCapacityTotalScore.Float64)
			vitalCapacityDistribution4Avg[grade].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			vitalCapacityDistribution4Avg[3].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				vitalCapacityBoy[grade].add(scores[i].VitalCapacity.Float64)
				vitalCapacityBoy[3].add(scores[i].VitalCapacity.Float64)
				vitalCapacityScoreBoy[grade].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityScoreBoy[3].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityDistribution4Boy[grade].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
				vitalCapacityDistribution4Boy[3].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				vitalCapacityGirl[grade].add(scores[i].VitalCapacity.Float64)
				vitalCapacityGirl[3].add(scores[i].VitalCapacity.Float64)
				vitalCapacityScoreGirl[grade].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityScoreGirl[3].add(scores[i].VitalCapacityTotalScore.Float64)
				vitalCapacityDistribution4Girl[grade].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
				vitalCapacityDistribution4Girl[3].add(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].FiftyMeters.Valid {
			fiftyMetersAvg[grade].add(scores[i].FiftyMeters.Float64)
			fiftyMetersAvg[3].add(scores[i].FiftyMeters.Float64)
			fiftyMetersScoreAvg[grade].add(scores[i].FiftyMetersTotalScore.Float64)
			fiftyMetersScoreAvg[3].add(scores[i].FiftyMetersTotalScore.Float64)
			fiftyMetersDistribution4Avg[grade].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			fiftyMetersDistribution4Avg[3].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				fiftyMetersBoy[grade].add(scores[i].FiftyMeters.Float64)
				fiftyMetersBoy[3].add(scores[i].FiftyMeters.Float64)
				fiftyMetersScoreBoy[grade].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersScoreBoy[3].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersDistribution4Boy[grade].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
				fiftyMetersDistribution4Boy[3].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				fiftyMetersGirl[grade].add(scores[i].FiftyMeters.Float64)
				fiftyMetersGirl[3].add(scores[i].FiftyMeters.Float64)
				fiftyMetersScoreGirl[grade].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersScoreGirl[3].add(scores[i].FiftyMetersTotalScore.Float64)
				fiftyMetersDistribution4Girl[grade].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
				fiftyMetersDistribution4Girl[3].add(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].SitAndReach.Valid {
			sitAndReachAvg[grade].add(scores[i].SitAndReach.Float64)
			sitAndReachAvg[3].add(scores[i].SitAndReach.Float64)
			sitAndReachScoreAvg[grade].add(scores[i].SitAndReachTotalScore.Float64)
			sitAndReachScoreAvg[3].add(scores[i].SitAndReachTotalScore.Float64)
			sitAndReachDistribution4Avg[grade].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			sitAndReachDistribution4Avg[3].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				sitAndReachBoy[grade].add(scores[i].SitAndReach.Float64)
				sitAndReachBoy[3].add(scores[i].SitAndReach.Float64)
				sitAndReachScoreBoy[grade].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachScoreBoy[3].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachDistribution4Boy[grade].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
				sitAndReachDistribution4Boy[3].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				sitAndReachGirl[grade].add(scores[i].SitAndReach.Float64)
				sitAndReachGirl[3].add(scores[i].SitAndReach.Float64)
				sitAndReachScoreGirl[grade].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachScoreGirl[3].add(scores[i].SitAndReachTotalScore.Float64)
				sitAndReachDistribution4Girl[grade].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
				sitAndReachDistribution4Girl[3].add(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].StandingLongJump.Valid {
			standingLongJumpAvg[grade].add(scores[i].StandingLongJump.Float64)
			standingLongJumpAvg[3].add(scores[i].StandingLongJump.Float64)
			standingLongJumpScoreAvg[grade].add(scores[i].StandingLongJumpTotalScore.Float64)
			standingLongJumpScoreAvg[3].add(scores[i].StandingLongJumpTotalScore.Float64)
			standingLongJumpDistribution4Avg[grade].add(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60)
			standingLongJumpDistribution4Avg[3].add(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				standingLongJumpBoy[grade].add(scores[i].StandingLongJump.Float64)
				standingLongJumpBoy[3].add(scores[i].StandingLongJump.Float64)
				standingLongJumpScoreBoy[grade].add(scores[i].StandingLongJumpTotalScore.Float64)
				standingLongJumpScoreBoy[3].add(scores[i].StandingLongJumpTotalScore.Float64)
				standingLongJumpDistribution4Boy[grade].add(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60)
				standingLongJumpDistribution4Boy[3].add(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				standingLongJumpGirl[grade].add(scores[i].StandingLongJump.Float64)
				standingLongJumpGirl[3].add(scores[i].StandingLongJump.Float64)
				standingLongJumpScoreGirl[grade].add(scores[i].StandingLongJumpTotalScore.Float64)
				standingLongJumpScoreGirl[3].add(scores[i].StandingLongJumpTotalScore.Float64)
				standingLongJumpDistribution4Girl[grade].add(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60)
				standingLongJumpDistribution4Girl[3].add(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].OneMinuteSitUp.Valid {
			oneMinuteSitUpsAvg[grade].add(scores[i].OneMinuteSitUp.Float64)
			oneMinuteSitUpsAvg[3].add(scores[i].OneMinuteSitUp.Float64)
			oneMinuteSitUpsScoreAvg[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64)
			oneMinuteSitUpsScoreAvg[3].add(scores[i].OneMinuteSitUpTotalScore.Float64)
			oneMinuteSitUpsDistribution4Avg[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
			oneMinuteSitUpsDistribution4Avg[3].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
			oneMinuteSitUpsGirl[grade].add(scores[i].OneMinuteSitUp.Float64)
			oneMinuteSitUpsGirl[3].add(scores[i].OneMinuteSitUp.Float64)
			oneMinuteSitUpsScoreGirl[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64)
			oneMinuteSitUpsScoreGirl[3].add(scores[i].OneMinuteSitUpTotalScore.Float64)
			oneMinuteSitUpsDistribution4Girl[grade].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
			oneMinuteSitUpsDistribution4Girl[3].add(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60)
		}
		if scores[i].Chinning.Valid {
			oneMinuteSitUpsAvg[grade].add(scores[i].Chinning.Float64)
			oneMinuteSitUpsAvg[3].add(scores[i].Chinning.Float64)
			oneMinuteSitUpsScoreAvg[grade].add(scores[i].ChinningTotalScore.Float64)
			oneMinuteSitUpsScoreAvg[3].add(scores[i].ChinningTotalScore.Float64)
			oneMinuteSitUpsDistribution4Avg[grade].add(scores[i].ChinningTotalScore.Float64, 90, 80, 60)
			oneMinuteSitUpsDistribution4Avg[3].add(scores[i].ChinningTotalScore.Float64, 90, 80, 60)
			oneMinuteSitUpsBoy[grade].add(scores[i].Chinning.Float64)
			oneMinuteSitUpsBoy[3].add(scores[i].Chinning.Float64)
			oneMinuteSitUpsScoreBoy[grade].add(scores[i].ChinningTotalScore.Float64)
			oneMinuteSitUpsScoreBoy[3].add(scores[i].ChinningTotalScore.Float64)
			oneMinuteSitUpsDistribution4Boy[grade].add(scores[i].ChinningTotalScore.Float64, 90, 80, 60)
			oneMinuteSitUpsDistribution4Boy[3].add(scores[i].ChinningTotalScore.Float64, 90, 80, 60)
		}
		if scores[i].OneThousandMeters.Valid {
			enduranceRunAvg[grade].add(scores[i].OneThousandMeters.Float64)
			enduranceRunAvg[3].add(scores[i].OneThousandMeters.Float64)
			enduranceRunScoreAvg[grade].add(scores[i].OneThousandMetersTotalScore.Float64)
			enduranceRunScoreAvg[3].add(scores[i].OneThousandMetersTotalScore.Float64)
			enduranceRunDistribution4Avg[grade].add(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60)
			enduranceRunDistribution4Avg[3].add(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60)
			enduranceRunBoy[grade].add(scores[i].OneThousandMeters.Float64)
			enduranceRunBoy[3].add(scores[i].OneThousandMeters.Float64)
			enduranceRunScoreBoy[grade].add(scores[i].OneThousandMetersTotalScore.Float64)
			enduranceRunScoreBoy[3].add(scores[i].OneThousandMetersTotalScore.Float64)
			enduranceRunDistribution4Boy[grade].add(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60)
			enduranceRunDistribution4Boy[3].add(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60)
		}
		if scores[i].EightHundredMeters.Valid {
			enduranceRunAvg[grade].add(scores[i].EightHundredMeters.Float64)
			enduranceRunAvg[3].add(scores[i].EightHundredMeters.Float64)
			enduranceRunScoreAvg[grade].add(scores[i].EightHundredMetersTotalScore.Float64)
			enduranceRunScoreAvg[3].add(scores[i].EightHundredMetersTotalScore.Float64)
			enduranceRunDistribution4Avg[grade].add(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60)
			enduranceRunDistribution4Avg[3].add(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60)
			enduranceRunGirl[grade].add(scores[i].EightHundredMeters.Float64)
			enduranceRunGirl[3].add(scores[i].EightHundredMeters.Float64)
			enduranceRunScoreGirl[grade].add(scores[i].EightHundredMetersTotalScore.Float64)
			enduranceRunScoreGirl[3].add(scores[i].EightHundredMetersTotalScore.Float64)
			enduranceRunDistribution4Girl[grade].add(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60)
			enduranceRunDistribution4Girl[3].add(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60)
		}
		if scores[i].GripStrength.Valid {
			reportData.SchoolInfo.HasExtension = true
			gripAvg[grade].add(scores[i].GripStrength.Float64)
			gripAvg[3].add(scores[i].GripStrength.Float64)
			gripDistribution4Avg[grade].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			gripDistribution4Avg[3].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				gripBoy[grade].add(scores[i].GripStrength.Float64)
				gripBoy[3].add(scores[i].GripStrength.Float64)
				gripDistribution4Boy[grade].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
				gripDistribution4Boy[3].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				gripGirl[grade].add(scores[i].GripStrength.Float64)
				gripGirl[3].add(scores[i].GripStrength.Float64)
				gripDistribution4Girl[grade].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
				gripDistribution4Girl[3].add4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
		if scores[i].ResponseCapability.Valid {
			reportData.SchoolInfo.HasExtension = true
			reactionSpeedAvg[grade].add(scores[i].ResponseCapability.Float64)
			reactionSpeedAvg[3].add(scores[i].ResponseCapability.Float64)
			reactionSpeedDistribution4Avg[grade].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			reactionSpeedDistribution4Avg[3].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				reactionSpeedBoy[grade].add(scores[i].ResponseCapability.Float64)
				reactionSpeedBoy[3].add(scores[i].ResponseCapability.Float64)
				reactionSpeedDistribution4Boy[grade].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
				reactionSpeedDistribution4Boy[3].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				reactionSpeedGirl[grade].add(scores[i].ResponseCapability.Float64)
				reactionSpeedGirl[3].add(scores[i].ResponseCapability.Float64)
				reactionSpeedDistribution4Girl[grade].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
				reactionSpeedDistribution4Girl[3].add4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
		if scores[i].VerticalJump.Valid {
			reportData.SchoolInfo.HasExtension = true
			verticalJumpAvg[grade].add(scores[i].VerticalJump.Float64)
			verticalJumpAvg[3].add(scores[i].VerticalJump.Float64)
			verticalJumpDistribution4Avg[grade].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			verticalJumpDistribution4Avg[3].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				verticalJumpBoy[grade].add(scores[i].VerticalJump.Float64)
				verticalJumpBoy[3].add(scores[i].VerticalJump.Float64)
				verticalJumpDistribution4Boy[grade].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
				verticalJumpDistribution4Boy[3].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				verticalJumpGirl[grade].add(scores[i].VerticalJump.Float64)
				verticalJumpGirl[3].add(scores[i].VerticalJump.Float64)
				verticalJumpDistribution4Girl[grade].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
				verticalJumpDistribution4Girl[3].add4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
		if scores[i].BalanceAbility.Valid {
			reportData.SchoolInfo.HasExtension = true
			balanceAbilityAvg[grade].add(scores[i].BalanceAbility.Float64)
			balanceAbilityAvg[3].add(scores[i].BalanceAbility.Float64)
			balanceAbilityDistribution4Avg[grade].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			balanceAbilityDistribution4Avg[3].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			if scores[i].Sex == 1 {
				balanceAbilityBoy[grade].add(scores[i].BalanceAbility.Float64)
				balanceAbilityBoy[3].add(scores[i].BalanceAbility.Float64)
				balanceAbilityDistribution4Boy[grade].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
				balanceAbilityDistribution4Boy[3].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			} else if scores[i].Sex == 2 {
				balanceAbilityGirl[grade].add(scores[i].BalanceAbility.Float64)
				balanceAbilityGirl[3].add(scores[i].BalanceAbility.Float64)
				balanceAbilityDistribution4Girl[grade].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
				balanceAbilityDistribution4Girl[3].add4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格")
			}
		}
	}
	reportData.SchoolInfo.Score = scoreAvg.calculate()
	if reportData.SchoolInfo.Score >= 90 {
		reportData.SchoolInfo.Level = "优"
	} else if reportData.SchoolInfo.Score >= 80 {
		reportData.SchoolInfo.Level = "良"
	} else if reportData.SchoolInfo.Score >= 60 {
		reportData.SchoolInfo.Level = "中"
	} else {
		reportData.SchoolInfo.Level = "差"
	}
	reportData.EachScoreInfo.Total.BoyScore = boyScoreAvg.calculate()
	reportData.EachScoreInfo.Total.GirlScore = girlScoreAvg.calculate()
	reportData.EachScoreInfo.Total.AvgScore = reportData.SchoolInfo.Score
	reportData.SchoolScoresInfo.Boy = boyDistribution4.calculate()
	reportData.SchoolScoresInfo.Girl = girlDistribution4.calculate()
	reportData.SchoolScoresInfo.Avg = avgDistribution4.calculate()
	for i := 0; i < 3; i++ {
		reportData.Height.EachInfo[i].Boy.Result = heightBoy[i].calculate()
		reportData.Height.EachInfo[i].Girl.Result = heightGirl[i].calculate()
		reportData.Height.EachInfo[i].Avg.Result = heightAvg[i].calculate()
		reportData.Weight.EachInfo[i].Boy.Result = weightBoy[i].calculate()
		reportData.Weight.EachInfo[i].Girl.Result = weightGirl[i].calculate()
		reportData.Weight.EachInfo[i].Avg.Result = weightAvg[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Boy.Result = bodyMassIndexBoy[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Girl.Result = bodyMassIndexGirl[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Avg.Result = bodyMassIndexAvg[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Boy.Score = bodyMassIndexScoreBoy[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Girl.Score = bodyMassIndexScoreGirl[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Avg.Score = bodyMassIndexScoreAvg[i].calculate()
		reportData.BodyMassIndex.EachInfo[i].Boy.Max = bodyMassIndexMaxBoy[i]
		reportData.BodyMassIndex.EachInfo[i].Boy.Min = bodyMassIndexMinBoy[i]
		reportData.BodyMassIndex.EachInfo[i].Girl.Max = bodyMassIndexMaxGirl[i]
		reportData.BodyMassIndex.EachInfo[i].Girl.Min = bodyMassIndexMinGirl[i]
		reportData.BodyMassIndex.EachInfo[i].Avg.Max = bodyMassIndexMaxAvg[i]
		reportData.BodyMassIndex.EachInfo[i].Avg.Min = bodyMassIndexMinAvg[i]
		reportData.BodyMassIndex.EachInfo[i].Boy.Percentage = bodyMassIndexDistribution4Boy[i].calculate1()
		reportData.BodyMassIndex.EachInfo[i].Girl.Percentage = bodyMassIndexDistribution4Girl[i].calculate1()
		reportData.BodyMassIndex.EachInfo[i].Avg.Percentage = bodyMassIndexDistribution4Avg[i].calculate1()
		reportData.BodyFat.EachInfo[i].Boy.Result = bodyFatBoy[i].calculate()
		reportData.BodyFat.EachInfo[i].Girl.Result = bodyFatGirl[i].calculate()
		reportData.BodyFat.EachInfo[i].Avg.Result = bodyFatAvg[i].calculate()
		reportData.BodyFat.EachInfo[i].Boy.Standard = bodyFatDistribution4Boy[i].calculateCustom(1)
		reportData.BodyFat.EachInfo[i].Boy.Excess = bodyFatDistribution4Boy[i].calculateCustom(2)
		reportData.BodyFat.EachInfo[i].Boy.LowStandard = bodyFatDistribution4Boy[i].calculateCustom(3)
		reportData.BodyFat.EachInfo[i].Girl.Standard = bodyFatDistribution4Girl[i].calculateCustom(1)
		reportData.BodyFat.EachInfo[i].Girl.Excess = bodyFatDistribution4Girl[i].calculateCustom(2)
		reportData.BodyFat.EachInfo[i].Girl.LowStandard = bodyFatDistribution4Girl[i].calculateCustom(3)
		reportData.BodyFat.EachInfo[i].Avg.Standard = bodyFatDistribution4Avg[i].calculateCustom(1)
		reportData.BodyFat.EachInfo[i].Avg.Excess = bodyFatDistribution4Avg[i].calculateCustom(2)
		reportData.BodyFat.EachInfo[i].Avg.LowStandard = bodyFatDistribution4Avg[i].calculateCustom(3)
		reportData.VitalCapacity.EachInfo[i].Boy.Result = vitalCapacityBoy[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Girl.Result = vitalCapacityGirl[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Avg.Result = vitalCapacityAvg[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Boy.Score = vitalCapacityScoreBoy[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Girl.Score = vitalCapacityScoreGirl[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Avg.Score = vitalCapacityScoreAvg[i].calculate()
		reportData.VitalCapacity.EachInfo[i].Boy.Nums = vitalCapacityDistribution4Boy[i].calculate3()
		reportData.VitalCapacity.EachInfo[i].Boy.Percentage = vitalCapacityDistribution4Boy[i].calculate2()
		reportData.VitalCapacity.EachInfo[i].Girl.Nums = vitalCapacityDistribution4Girl[i].calculate3()
		reportData.VitalCapacity.EachInfo[i].Girl.Percentage = vitalCapacityDistribution4Girl[i].calculate2()
		reportData.VitalCapacity.EachInfo[i].Avg.Nums = vitalCapacityDistribution4Avg[i].calculate3()
		reportData.VitalCapacity.EachInfo[i].Avg.Percentage = vitalCapacityDistribution4Avg[i].calculate2()
		reportData.FiftyMeter.EachInfo[i].Boy.Result = fiftyMetersBoy[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Girl.Result = fiftyMetersGirl[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Avg.Result = fiftyMetersAvg[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Boy.Score = fiftyMetersScoreBoy[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Girl.Score = fiftyMetersScoreGirl[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Avg.Score = fiftyMetersScoreAvg[i].calculate()
		reportData.FiftyMeter.EachInfo[i].Boy.Nums = fiftyMetersDistribution4Boy[i].calculate3()
		reportData.FiftyMeter.EachInfo[i].Boy.Percentage = fiftyMetersDistribution4Boy[i].calculate2()
		reportData.FiftyMeter.EachInfo[i].Girl.Nums = fiftyMetersDistribution4Girl[i].calculate3()
		reportData.FiftyMeter.EachInfo[i].Girl.Percentage = fiftyMetersDistribution4Girl[i].calculate2()
		reportData.FiftyMeter.EachInfo[i].Avg.Nums = fiftyMetersDistribution4Avg[i].calculate3()
		reportData.FiftyMeter.EachInfo[i].Avg.Percentage = fiftyMetersDistribution4Avg[i].calculate2()
		reportData.SitAndReach.EachInfo[i].Boy.Result = sitAndReachBoy[i].calculate()
		reportData.SitAndReach.EachInfo[i].Girl.Result = sitAndReachGirl[i].calculate()
		reportData.SitAndReach.EachInfo[i].Avg.Result = sitAndReachAvg[i].calculate()
		reportData.SitAndReach.EachInfo[i].Boy.Score = sitAndReachScoreBoy[i].calculate()
		reportData.SitAndReach.EachInfo[i].Girl.Score = sitAndReachScoreGirl[i].calculate()
		reportData.SitAndReach.EachInfo[i].Avg.Score = sitAndReachScoreAvg[i].calculate()
		reportData.SitAndReach.EachInfo[i].Boy.Nums = sitAndReachDistribution4Boy[i].calculate3()
		reportData.SitAndReach.EachInfo[i].Boy.Percentage = sitAndReachDistribution4Boy[i].calculate2()
		reportData.SitAndReach.EachInfo[i].Girl.Nums = sitAndReachDistribution4Girl[i].calculate3()
		reportData.SitAndReach.EachInfo[i].Girl.Percentage = sitAndReachDistribution4Girl[i].calculate2()
		reportData.SitAndReach.EachInfo[i].Avg.Nums = sitAndReachDistribution4Avg[i].calculate3()
		reportData.SitAndReach.EachInfo[i].Avg.Percentage = sitAndReachDistribution4Avg[i].calculate2()

		reportData.OneMinuteSitUps.EachInfo[i].Boy.Result = oneMinuteSitUpsBoy[i].calculate()
		reportData.OneMinuteSitUps.EachInfo[i].Girl.Result = oneMinuteSitUpsGirl[i].calculate()
		reportData.OneMinuteSitUps.EachInfo[i].Avg.Result = oneMinuteSitUpsAvg[i].calculate()
		reportData.OneMinuteSitUps.EachInfo[i].Boy.Score = oneMinuteSitUpsScoreBoy[i].calculate()
		reportData.OneMinuteSitUps.EachInfo[i].Girl.Score = oneMinuteSitUpsScoreGirl[i].calculate()
		reportData.OneMinuteSitUps.EachInfo[i].Avg.Score = oneMinuteSitUpsScoreAvg[i].calculate()
		reportData.OneMinuteSitUps.EachInfo[i].Boy.Nums = oneMinuteSitUpsDistribution4Boy[i].calculate3()
		reportData.OneMinuteSitUps.EachInfo[i].Boy.Percentage = oneMinuteSitUpsDistribution4Boy[i].calculate2()
		reportData.OneMinuteSitUps.EachInfo[i].Girl.Nums = oneMinuteSitUpsDistribution4Girl[i].calculate3()
		reportData.OneMinuteSitUps.EachInfo[i].Girl.Percentage = oneMinuteSitUpsDistribution4Girl[i].calculate2()
		reportData.OneMinuteSitUps.EachInfo[i].Avg.Nums = oneMinuteSitUpsDistribution4Avg[i].calculate3()
		reportData.OneMinuteSitUps.EachInfo[i].Avg.Percentage = oneMinuteSitUpsDistribution4Avg[i].calculate2()

		reportData.StandingLongJump.EachInfo[i].Boy.Result = standingLongJumpBoy[i].calculate()
		reportData.StandingLongJump.EachInfo[i].Girl.Result = standingLongJumpGirl[i].calculate()
		reportData.StandingLongJump.EachInfo[i].Avg.Result = standingLongJumpAvg[i].calculate()
		reportData.StandingLongJump.EachInfo[i].Boy.Score = standingLongJumpScoreBoy[i].calculate()
		reportData.StandingLongJump.EachInfo[i].Girl.Score = standingLongJumpScoreGirl[i].calculate()
		reportData.StandingLongJump.EachInfo[i].Avg.Score = standingLongJumpScoreAvg[i].calculate()
		reportData.StandingLongJump.EachInfo[i].Boy.Nums = standingLongJumpDistribution4Boy[i].calculate3()
		reportData.StandingLongJump.EachInfo[i].Boy.Percentage = standingLongJumpDistribution4Boy[i].calculate2()
		reportData.StandingLongJump.EachInfo[i].Girl.Nums = standingLongJumpDistribution4Girl[i].calculate3()
		reportData.StandingLongJump.EachInfo[i].Girl.Percentage = standingLongJumpDistribution4Girl[i].calculate2()
		reportData.StandingLongJump.EachInfo[i].Avg.Nums = standingLongJumpDistribution4Avg[i].calculate3()
		reportData.StandingLongJump.EachInfo[i].Avg.Percentage = standingLongJumpDistribution4Avg[i].calculate2()
		reportData.EnduranceRun.EachInfo[i].Boy.Result = enduranceRunBoy[i].calculate()
		reportData.EnduranceRun.EachInfo[i].Girl.Result = enduranceRunGirl[i].calculate()
		reportData.EnduranceRun.EachInfo[i].Avg.Result = enduranceRunAvg[i].calculate()
		reportData.EnduranceRun.EachInfo[i].Boy.Score = enduranceRunScoreBoy[i].calculate()
		reportData.EnduranceRun.EachInfo[i].Girl.Score = enduranceRunScoreGirl[i].calculate()
		reportData.EnduranceRun.EachInfo[i].Avg.Score = enduranceRunScoreAvg[i].calculate()
		reportData.EnduranceRun.EachInfo[i].Boy.Nums = enduranceRunDistribution4Boy[i].calculate3()
		reportData.EnduranceRun.EachInfo[i].Boy.Percentage = enduranceRunDistribution4Boy[i].calculate2()
		reportData.EnduranceRun.EachInfo[i].Girl.Nums = enduranceRunDistribution4Girl[i].calculate3()
		reportData.EnduranceRun.EachInfo[i].Girl.Percentage = enduranceRunDistribution4Girl[i].calculate2()
		reportData.EnduranceRun.EachInfo[i].Avg.Nums = enduranceRunDistribution4Avg[i].calculate3()
		reportData.EnduranceRun.EachInfo[i].Avg.Percentage = enduranceRunDistribution4Avg[i].calculate2()
		reportData.Grip.EachInfo[i].Boy.Result = gripBoy[i].calculate()
		reportData.Grip.EachInfo[i].Girl.Result = gripGirl[i].calculate()
		reportData.Grip.EachInfo[i].Avg.Result = gripAvg[i].calculate()
		reportData.Grip.EachInfo[i].Boy.Nums = gripDistribution4Boy[i].calculate3()
		reportData.Grip.EachInfo[i].Boy.Percentage = gripDistribution4Boy[i].calculate2()
		reportData.Grip.EachInfo[i].Girl.Nums = gripDistribution4Girl[i].calculate3()
		reportData.Grip.EachInfo[i].Girl.Percentage = gripDistribution4Girl[i].calculate2()
		reportData.Grip.EachInfo[i].Avg.Nums = gripDistribution4Avg[i].calculate3()
		reportData.Grip.EachInfo[i].Avg.Percentage = gripDistribution4Avg[i].calculate2()
		reportData.ReactionSpeed.EachInfo[i].Boy.Result = reactionSpeedBoy[i].calculate()
		reportData.ReactionSpeed.EachInfo[i].Girl.Result = reactionSpeedGirl[i].calculate()
		reportData.ReactionSpeed.EachInfo[i].Avg.Result = reactionSpeedAvg[i].calculate()
		reportData.ReactionSpeed.EachInfo[i].Boy.Nums = reactionSpeedDistribution4Boy[i].calculate3()
		reportData.ReactionSpeed.EachInfo[i].Boy.Percentage = reactionSpeedDistribution4Boy[i].calculate2()
		reportData.ReactionSpeed.EachInfo[i].Girl.Nums = reactionSpeedDistribution4Girl[i].calculate3()
		reportData.ReactionSpeed.EachInfo[i].Girl.Percentage = reactionSpeedDistribution4Girl[i].calculate2()
		reportData.ReactionSpeed.EachInfo[i].Avg.Nums = reactionSpeedDistribution4Avg[i].calculate3()
		reportData.ReactionSpeed.EachInfo[i].Avg.Percentage = reactionSpeedDistribution4Avg[i].calculate2()
		reportData.BalanceAbility.EachInfo[i].Boy.Result = balanceAbilityBoy[i].calculate()
		reportData.BalanceAbility.EachInfo[i].Girl.Result = balanceAbilityGirl[i].calculate()
		reportData.BalanceAbility.EachInfo[i].Avg.Result = balanceAbilityAvg[i].calculate()
		reportData.BalanceAbility.EachInfo[i].Boy.Nums = balanceAbilityDistribution4Boy[i].calculate3()
		reportData.BalanceAbility.EachInfo[i].Boy.Percentage = balanceAbilityDistribution4Boy[i].calculate2()
		reportData.BalanceAbility.EachInfo[i].Girl.Nums = balanceAbilityDistribution4Girl[i].calculate3()
		reportData.BalanceAbility.EachInfo[i].Girl.Percentage = balanceAbilityDistribution4Girl[i].calculate2()
		reportData.BalanceAbility.EachInfo[i].Avg.Nums = balanceAbilityDistribution4Avg[i].calculate3()
		reportData.BalanceAbility.EachInfo[i].Avg.Percentage = balanceAbilityDistribution4Avg[i].calculate2()
	}
	reportData.BodyMassIndex.EachInfo[3].Boy.Result = bodyMassIndexBoy[3].calculate()
	reportData.BodyMassIndex.EachInfo[3].Girl.Result = bodyMassIndexGirl[3].calculate()
	reportData.BodyMassIndex.EachInfo[3].Avg.Result = bodyMassIndexAvg[3].calculate()
	reportData.BodyMassIndex.EachInfo[3].Boy.Score = bodyMassIndexScoreBoy[3].calculate()
	reportData.BodyMassIndex.EachInfo[3].Girl.Score = bodyMassIndexScoreGirl[3].calculate()
	reportData.BodyMassIndex.EachInfo[3].Avg.Score = bodyMassIndexScoreAvg[3].calculate()
	reportData.BodyMassIndex.EachInfo[3].Boy.Max = bodyMassIndexMaxBoy[3]
	reportData.BodyMassIndex.EachInfo[3].Boy.Min = bodyMassIndexMinBoy[3]
	reportData.BodyMassIndex.EachInfo[3].Girl.Max = bodyMassIndexMaxGirl[3]
	reportData.BodyMassIndex.EachInfo[3].Girl.Min = bodyMassIndexMinGirl[3]
	reportData.BodyMassIndex.EachInfo[3].Avg.Max = bodyMassIndexMaxAvg[3]
	reportData.BodyMassIndex.EachInfo[3].Avg.Min = bodyMassIndexMinAvg[3]
	reportData.BodyMassIndex.EachInfo[3].Boy.Percentage = bodyMassIndexDistribution4Boy[3].calculate1()
	reportData.BodyMassIndex.EachInfo[3].Girl.Percentage = bodyMassIndexDistribution4Girl[3].calculate1()
	reportData.BodyMassIndex.EachInfo[3].Avg.Percentage = bodyMassIndexDistribution4Avg[3].calculate1()
	reportData.BodyFat.EachInfo[3].Boy.Result = bodyFatBoy[3].calculate()
	reportData.BodyFat.EachInfo[3].Girl.Result = bodyFatGirl[3].calculate()
	reportData.BodyFat.EachInfo[3].Avg.Result = bodyFatAvg[3].calculate()
	reportData.BodyFat.EachInfo[3].Boy.Standard = bodyFatDistribution4Boy[3].calculateCustom(1)
	reportData.BodyFat.EachInfo[3].Boy.Excess = bodyFatDistribution4Boy[3].calculateCustom(2)
	reportData.BodyFat.EachInfo[3].Boy.LowStandard = bodyFatDistribution4Boy[3].calculateCustom(3)
	reportData.BodyFat.EachInfo[3].Girl.Standard = bodyFatDistribution4Girl[3].calculateCustom(1)
	reportData.BodyFat.EachInfo[3].Girl.Excess = bodyFatDistribution4Girl[3].calculateCustom(2)
	reportData.BodyFat.EachInfo[3].Girl.LowStandard = bodyFatDistribution4Girl[3].calculateCustom(3)
	reportData.BodyFat.EachInfo[3].Avg.Standard = bodyFatDistribution4Avg[3].calculateCustom(1)
	reportData.BodyFat.EachInfo[3].Avg.Excess = bodyFatDistribution4Avg[3].calculateCustom(2)
	reportData.BodyFat.EachInfo[3].Avg.LowStandard = bodyFatDistribution4Avg[3].calculateCustom(3)
	reportData.VitalCapacity.EachInfo[3].Boy.Result = vitalCapacityBoy[3].calculate()
	reportData.VitalCapacity.EachInfo[3].Girl.Result = vitalCapacityGirl[3].calculate()
	reportData.VitalCapacity.EachInfo[3].Avg.Result = vitalCapacityAvg[3].calculate()
	reportData.VitalCapacity.EachInfo[3].Boy.Score = vitalCapacityScoreBoy[3].calculate()
	reportData.VitalCapacity.EachInfo[3].Girl.Score = vitalCapacityScoreGirl[3].calculate()
	reportData.VitalCapacity.EachInfo[3].Avg.Score = vitalCapacityScoreAvg[3].calculate()
	reportData.VitalCapacity.EachInfo[3].Boy.Nums = vitalCapacityDistribution4Boy[3].calculate3()
	reportData.VitalCapacity.EachInfo[3].Boy.Percentage = vitalCapacityDistribution4Boy[3].calculate2()
	reportData.VitalCapacity.EachInfo[3].Girl.Nums = vitalCapacityDistribution4Girl[3].calculate3()
	reportData.VitalCapacity.EachInfo[3].Girl.Percentage = vitalCapacityDistribution4Girl[3].calculate2()
	reportData.VitalCapacity.EachInfo[3].Avg.Nums = vitalCapacityDistribution4Avg[3].calculate3()
	reportData.VitalCapacity.EachInfo[3].Avg.Percentage = vitalCapacityDistribution4Avg[3].calculate2()
	reportData.FiftyMeter.EachInfo[3].Boy.Result = fiftyMetersBoy[3].calculate()
	reportData.FiftyMeter.EachInfo[3].Girl.Result = fiftyMetersGirl[3].calculate()
	reportData.FiftyMeter.EachInfo[3].Avg.Result = fiftyMetersAvg[3].calculate()
	reportData.FiftyMeter.EachInfo[3].Boy.Score = fiftyMetersScoreBoy[3].calculate()
	reportData.FiftyMeter.EachInfo[3].Girl.Score = fiftyMetersScoreGirl[3].calculate()
	reportData.FiftyMeter.EachInfo[3].Avg.Score = fiftyMetersScoreAvg[3].calculate()
	reportData.FiftyMeter.EachInfo[3].Boy.Nums = fiftyMetersDistribution4Boy[3].calculate3()
	reportData.FiftyMeter.EachInfo[3].Boy.Percentage = fiftyMetersDistribution4Boy[3].calculate2()
	reportData.FiftyMeter.EachInfo[3].Girl.Nums = fiftyMetersDistribution4Girl[3].calculate3()
	reportData.FiftyMeter.EachInfo[3].Girl.Percentage = fiftyMetersDistribution4Girl[3].calculate2()
	reportData.FiftyMeter.EachInfo[3].Avg.Nums = fiftyMetersDistribution4Avg[3].calculate3()
	reportData.FiftyMeter.EachInfo[3].Avg.Percentage = fiftyMetersDistribution4Avg[3].calculate2()
	reportData.SitAndReach.EachInfo[3].Boy.Result = sitAndReachBoy[3].calculate()
	reportData.SitAndReach.EachInfo[3].Girl.Result = sitAndReachGirl[3].calculate()
	reportData.SitAndReach.EachInfo[3].Avg.Result = sitAndReachAvg[3].calculate()
	reportData.SitAndReach.EachInfo[3].Boy.Score = sitAndReachScoreBoy[3].calculate()
	reportData.SitAndReach.EachInfo[3].Girl.Score = sitAndReachScoreGirl[3].calculate()
	reportData.SitAndReach.EachInfo[3].Avg.Score = sitAndReachScoreAvg[3].calculate()
	reportData.SitAndReach.EachInfo[3].Boy.Nums = sitAndReachDistribution4Boy[3].calculate3()
	reportData.SitAndReach.EachInfo[3].Boy.Percentage = sitAndReachDistribution4Boy[3].calculate2()
	reportData.SitAndReach.EachInfo[3].Girl.Nums = sitAndReachDistribution4Girl[3].calculate3()
	reportData.SitAndReach.EachInfo[3].Girl.Percentage = sitAndReachDistribution4Girl[3].calculate2()
	reportData.SitAndReach.EachInfo[3].Avg.Nums = sitAndReachDistribution4Avg[3].calculate3()
	reportData.SitAndReach.EachInfo[3].Avg.Percentage = sitAndReachDistribution4Avg[3].calculate2()
	reportData.StandingLongJump.EachInfo[3].Boy.Result = standingLongJumpBoy[3].calculate()
	reportData.StandingLongJump.EachInfo[3].Girl.Result = standingLongJumpGirl[3].calculate()
	reportData.StandingLongJump.EachInfo[3].Avg.Result = standingLongJumpAvg[3].calculate()
	reportData.StandingLongJump.EachInfo[3].Boy.Score = standingLongJumpScoreBoy[3].calculate()
	reportData.StandingLongJump.EachInfo[3].Girl.Score = standingLongJumpScoreGirl[3].calculate()
	reportData.StandingLongJump.EachInfo[3].Avg.Score = standingLongJumpScoreAvg[3].calculate()
	reportData.StandingLongJump.EachInfo[3].Boy.Nums = standingLongJumpDistribution4Boy[3].calculate3()
	reportData.StandingLongJump.EachInfo[3].Boy.Percentage = standingLongJumpDistribution4Boy[3].calculate2()
	reportData.StandingLongJump.EachInfo[3].Girl.Nums = standingLongJumpDistribution4Girl[3].calculate3()
	reportData.StandingLongJump.EachInfo[3].Girl.Percentage = standingLongJumpDistribution4Girl[3].calculate2()
	reportData.StandingLongJump.EachInfo[3].Avg.Nums = standingLongJumpDistribution4Avg[3].calculate3()
	reportData.StandingLongJump.EachInfo[3].Avg.Percentage = standingLongJumpDistribution4Avg[3].calculate2()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Result = oneMinuteSitUpsBoy[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Result = oneMinuteSitUpsGirl[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Result = oneMinuteSitUpsAvg[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Score = oneMinuteSitUpsScoreBoy[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Score = oneMinuteSitUpsScoreGirl[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Score = oneMinuteSitUpsScoreAvg[3].calculate()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Nums = oneMinuteSitUpsDistribution4Boy[3].calculate3()
	reportData.OneMinuteSitUps.EachInfo[3].Boy.Percentage = oneMinuteSitUpsDistribution4Boy[3].calculate2()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Nums = oneMinuteSitUpsDistribution4Girl[3].calculate3()
	reportData.OneMinuteSitUps.EachInfo[3].Girl.Percentage = oneMinuteSitUpsDistribution4Girl[3].calculate2()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Nums = oneMinuteSitUpsDistribution4Avg[3].calculate3()
	reportData.OneMinuteSitUps.EachInfo[3].Avg.Percentage = oneMinuteSitUpsDistribution4Avg[3].calculate2()
	reportData.EnduranceRun.EachInfo[3].Boy.Result = enduranceRunBoy[3].calculate()
	reportData.EnduranceRun.EachInfo[3].Girl.Result = enduranceRunGirl[3].calculate()
	reportData.EnduranceRun.EachInfo[3].Avg.Result = enduranceRunAvg[3].calculate()
	reportData.EnduranceRun.EachInfo[3].Boy.Score = enduranceRunScoreBoy[3].calculate()
	reportData.EnduranceRun.EachInfo[3].Girl.Score = enduranceRunScoreGirl[3].calculate()
	reportData.EnduranceRun.EachInfo[3].Avg.Score = enduranceRunScoreAvg[3].calculate()
	reportData.EnduranceRun.EachInfo[3].Boy.Nums = enduranceRunDistribution4Boy[3].calculate3()
	reportData.EnduranceRun.EachInfo[3].Boy.Percentage = enduranceRunDistribution4Boy[3].calculate2()
	reportData.EnduranceRun.EachInfo[3].Girl.Nums = enduranceRunDistribution4Girl[3].calculate3()
	reportData.EnduranceRun.EachInfo[3].Girl.Percentage = enduranceRunDistribution4Girl[3].calculate2()
	reportData.EnduranceRun.EachInfo[3].Avg.Nums = enduranceRunDistribution4Avg[3].calculate3()
	reportData.EnduranceRun.EachInfo[3].Avg.Percentage = enduranceRunDistribution4Avg[3].calculate2()
	reportData.Grip.EachInfo[3].Boy.Result = gripBoy[3].calculate()
	reportData.Grip.EachInfo[3].Girl.Result = gripGirl[3].calculate()
	reportData.Grip.EachInfo[3].Avg.Result = gripAvg[3].calculate()
	reportData.Grip.EachInfo[3].Boy.Nums = gripDistribution4Boy[3].calculate3()
	reportData.Grip.EachInfo[3].Boy.Percentage = gripDistribution4Boy[3].calculate2()
	reportData.Grip.EachInfo[3].Girl.Nums = gripDistribution4Girl[3].calculate3()
	reportData.Grip.EachInfo[3].Girl.Percentage = gripDistribution4Girl[3].calculate2()
	reportData.Grip.EachInfo[3].Avg.Nums = gripDistribution4Avg[3].calculate3()
	reportData.Grip.EachInfo[3].Avg.Percentage = gripDistribution4Avg[3].calculate2()
	reportData.ReactionSpeed.EachInfo[3].Boy.Result = reactionSpeedBoy[3].calculate()
	reportData.ReactionSpeed.EachInfo[3].Girl.Result = reactionSpeedGirl[3].calculate()
	reportData.ReactionSpeed.EachInfo[3].Avg.Result = reactionSpeedAvg[3].calculate()
	reportData.ReactionSpeed.EachInfo[3].Boy.Nums = reactionSpeedDistribution4Boy[3].calculate3()
	reportData.ReactionSpeed.EachInfo[3].Boy.Percentage = reactionSpeedDistribution4Boy[3].calculate2()
	reportData.ReactionSpeed.EachInfo[3].Girl.Nums = reactionSpeedDistribution4Girl[3].calculate3()
	reportData.ReactionSpeed.EachInfo[3].Girl.Percentage = reactionSpeedDistribution4Girl[3].calculate2()
	reportData.ReactionSpeed.EachInfo[3].Avg.Nums = reactionSpeedDistribution4Avg[3].calculate3()
	reportData.ReactionSpeed.EachInfo[3].Avg.Percentage = reactionSpeedDistribution4Avg[3].calculate2()
	reportData.VerticalJump.EachInfo[3].Boy.Result = verticalJumpBoy[3].calculate()
	reportData.VerticalJump.EachInfo[3].Girl.Result = verticalJumpGirl[3].calculate()
	reportData.VerticalJump.EachInfo[3].Avg.Result = verticalJumpAvg[3].calculate()
	reportData.VerticalJump.EachInfo[3].Boy.Nums = verticalJumpDistribution4Boy[3].calculate3()
	reportData.VerticalJump.EachInfo[3].Boy.Percentage = verticalJumpDistribution4Boy[3].calculate2()
	reportData.VerticalJump.EachInfo[3].Girl.Nums = verticalJumpDistribution4Girl[3].calculate3()
	reportData.VerticalJump.EachInfo[3].Girl.Percentage = verticalJumpDistribution4Girl[3].calculate2()
	reportData.VerticalJump.EachInfo[3].Avg.Nums = verticalJumpDistribution4Avg[3].calculate3()
	reportData.VerticalJump.EachInfo[3].Avg.Percentage = verticalJumpDistribution4Avg[3].calculate2()
	reportData.BalanceAbility.EachInfo[3].Boy.Result = balanceAbilityBoy[3].calculate()
	reportData.BalanceAbility.EachInfo[3].Girl.Result = balanceAbilityGirl[3].calculate()
	reportData.BalanceAbility.EachInfo[3].Avg.Result = balanceAbilityAvg[3].calculate()
	reportData.BalanceAbility.EachInfo[3].Boy.Nums = balanceAbilityDistribution4Boy[3].calculate3()
	reportData.BalanceAbility.EachInfo[3].Boy.Percentage = balanceAbilityDistribution4Boy[3].calculate2()
	reportData.BalanceAbility.EachInfo[3].Girl.Nums = balanceAbilityDistribution4Girl[3].calculate3()
	reportData.BalanceAbility.EachInfo[3].Girl.Percentage = balanceAbilityDistribution4Girl[3].calculate2()
	reportData.BalanceAbility.EachInfo[3].Avg.Nums = balanceAbilityDistribution4Avg[3].calculate3()
	reportData.BalanceAbility.EachInfo[3].Avg.Percentage = balanceAbilityDistribution4Avg[3].calculate2()
	data, err := json.Marshal(reportData)
	return err, string(data)
}

func generatePrimaryGradeReport(school *entity.School, measurementDate time.Time, grade string) (err error, jsonStr string) {
	reportData := PrimaryGrade{}
	reportData.Date = measurementDate.Format("2006-01")
	reportData.SchoolInfo.Area, err = util.GetCityAreaName(school.ProvinceId, school.CityId, school.AreaId)
	if err != nil {
		return err, ""
	}
	reportData.SchoolInfo.Name = school.Name
	reportData.SchoolInfo.SchoolType = 1
	reportData.SchoolInfo.Year = strconv.Itoa(measurementDate.Year())
	if grade[1:2] == "1" {
		reportData.GradeInfo.Grade = "一年级"
	} else if grade[1:2] == "2" {
		reportData.GradeInfo.Grade = "二年级"
	} else if grade[1:2] == "3" {
		reportData.GradeInfo.Grade = "三年级"
	} else if grade[1:2] == "4" {
		reportData.GradeInfo.Grade = "四年级"
	} else if grade[1:2] == "5" {
		reportData.GradeInfo.Grade = "五年级"
	} else if grade[1:2] == "6" {
		reportData.GradeInfo.Grade = "六年级"
	}
	var scores []entity.Score
	_, err = nspel.GetOrmEngine().QueryTable("score").Filter("school_id", school.Id).Filter("grade", grade).Filter("measurement_date", measurementDate.Format("2006-01-02")).All(&scores)
	if err != nil {
		return err, ""
	}
	var scoreAvg, boyScoreAvg, girlScoreAvg avg
	classesMap := make(map[string]int)
	classScoreMap := make(map[string]avg)
	classScore2Map := make(map[string]avg)
	studentNumMap := make(map[string]studentNumEachInfo)
	itemMap := make(map[string]int)
	studentMap := make(map[string]map[string]map[string]interface{})
	heightAvgMap := make(map[string]avg)
	heightBoyMap := make(map[string]avg)
	heightGirlMap := make(map[string]avg)
	weightAvgMap := make(map[string]avg)
	weightBoyMap := make(map[string]avg)
	weightGirlMap := make(map[string]avg)
	bodyMassIndexAvgMap := make(map[string]avg)
	bodyMassIndexBoyMap := make(map[string]avg)
	bodyMassIndexGirlMap := make(map[string]avg)
	bodyMassIndex2AvgMap := make(map[string]avg)
	bodyMassIndex2BoyMap := make(map[string]avg)
	bodyMassIndex2GirlMap := make(map[string]avg)
	bodyMassIndexScoreAvgMap := make(map[string]avg)
	bodyMassIndexScoreBoyMap := make(map[string]avg)
	bodyMassIndexScoreGirlMap := make(map[string]avg)
	bodyMassIndexScore2AvgMap := make(map[string]avg)
	bodyMassIndexScore2BoyMap := make(map[string]avg)
	bodyMassIndexScore2GirlMap := make(map[string]avg)
	bodyMassIndexAvgMaxMap := make(map[string]interface{})
	bodyMassIndexAvgMinMap := make(map[string]interface{})
	bodyMassIndexBoyMaxMap := make(map[string]interface{})
	bodyMassIndexBoyMinMap := make(map[string]interface{})
	bodyMassIndexGirlMaxMap := make(map[string]interface{})
	bodyMassIndexGirlMinMap := make(map[string]interface{})
	bodyMassIndexAvgDistribution := make(map[string]distribution4)
	bodyMassIndexBoyDistribution := make(map[string]distribution4)
	bodyMassIndexGirlDistribution := make(map[string]distribution4)
	bodyFatAvgMap := make(map[string]avg)
	bodyFatBoyMap := make(map[string]avg)
	bodyFatGirlMap := make(map[string]avg)
	bodyFat2AvgMap := make(map[string]avg)
	bodyFat2BoyMap := make(map[string]avg)
	bodyFat2GirlMap := make(map[string]avg)
	bodyFatAvgDistribution := make(map[string]distribution4)
	bodyFatBoyDistribution := make(map[string]distribution4)
	bodyFatGirlDistribution := make(map[string]distribution4)
	vitalCapacityAvgMap := make(map[string]avg)
	vitalCapacityBoyMap := make(map[string]avg)
	vitalCapacityGirlMap := make(map[string]avg)
	vitalCapacity2AvgMap := make(map[string]avg)
	vitalCapacity2BoyMap := make(map[string]avg)
	vitalCapacity2GirlMap := make(map[string]avg)
	vitalCapacityScoreAvgMap := make(map[string]avg)
	vitalCapacityScoreBoyMap := make(map[string]avg)
	vitalCapacityScoreGirlMap := make(map[string]avg)
	vitalCapacityScore2AvgMap := make(map[string]avg)
	vitalCapacityScore2BoyMap := make(map[string]avg)
	vitalCapacityScore2GirlMap := make(map[string]avg)
	vitalCapacityBoyDistribution := make(map[string]distribution4)
	vitalCapacityGirlDistribution := make(map[string]distribution4)
	vitalCapacityAvgDistribution := make(map[string]distribution4)
	fiftyMetersAvgMap := make(map[string]avg)
	fiftyMetersBoyMap := make(map[string]avg)
	fiftyMetersGirlMap := make(map[string]avg)
	fiftyMeters2AvgMap := make(map[string]avg)
	fiftyMeters2BoyMap := make(map[string]avg)
	fiftyMeters2GirlMap := make(map[string]avg)
	fiftyMetersScoreAvgMap := make(map[string]avg)
	fiftyMetersScoreBoyMap := make(map[string]avg)
	fiftyMetersScoreGirlMap := make(map[string]avg)
	fiftyMetersScore2AvgMap := make(map[string]avg)
	fiftyMetersScore2BoyMap := make(map[string]avg)
	fiftyMetersScore2GirlMap := make(map[string]avg)
	fiftyMetersBoyDistribution := make(map[string]distribution4)
	fiftyMetersGirlDistribution := make(map[string]distribution4)
	fiftyMetersAvgDistribution := make(map[string]distribution4)
	sitAndReachAvgMap := make(map[string]avg)
	sitAndReachBoyMap := make(map[string]avg)
	sitAndReachGirlMap := make(map[string]avg)
	sitAndReach2AvgMap := make(map[string]avg)
	sitAndReach2BoyMap := make(map[string]avg)
	sitAndReach2GirlMap := make(map[string]avg)
	sitAndReachScoreAvgMap := make(map[string]avg)
	sitAndReachScoreBoyMap := make(map[string]avg)
	sitAndReachScoreGirlMap := make(map[string]avg)
	sitAndReachScore2AvgMap := make(map[string]avg)
	sitAndReachScore2BoyMap := make(map[string]avg)
	sitAndReachScore2GirlMap := make(map[string]avg)
	sitAndReachBoyDistribution := make(map[string]distribution4)
	sitAndReachGirlDistribution := make(map[string]distribution4)
	sitAndReachAvgDistribution := make(map[string]distribution4)
	oneMinuteSkippingAvgMap := make(map[string]avg)
	oneMinuteSkippingBoyMap := make(map[string]avg)
	oneMinuteSkippingGirlMap := make(map[string]avg)
	oneMinuteSkipping2AvgMap := make(map[string]avg)
	oneMinuteSkipping2BoyMap := make(map[string]avg)
	oneMinuteSkipping2GirlMap := make(map[string]avg)
	oneMinuteSkippingScoreAvgMap := make(map[string]avg)
	oneMinuteSkippingScoreBoyMap := make(map[string]avg)
	oneMinuteSkippingScoreGirlMap := make(map[string]avg)
	oneMinuteSkippingScore2AvgMap := make(map[string]avg)
	oneMinuteSkippingScore2BoyMap := make(map[string]avg)
	oneMinuteSkippingScore2GirlMap := make(map[string]avg)
	oneMinuteSkippingBoyDistribution := make(map[string]distribution4)
	oneMinuteSkippingGirlDistribution := make(map[string]distribution4)
	oneMinuteSkippingAvgDistribution := make(map[string]distribution4)
	oneMinuteSitUpsAvgMap := make(map[string]avg)
	oneMinuteSitUpsBoyMap := make(map[string]avg)
	oneMinuteSitUpsGirlMap := make(map[string]avg)
	oneMinuteSitUps2AvgMap := make(map[string]avg)
	oneMinuteSitUps2BoyMap := make(map[string]avg)
	oneMinuteSitUps2GirlMap := make(map[string]avg)
	oneMinuteSitUpsScoreAvgMap := make(map[string]avg)
	oneMinuteSitUpsScoreBoyMap := make(map[string]avg)
	oneMinuteSitUpsScoreGirlMap := make(map[string]avg)
	oneMinuteSitUpsScore2AvgMap := make(map[string]avg)
	oneMinuteSitUpsScore2BoyMap := make(map[string]avg)
	oneMinuteSitUpsScore2GirlMap := make(map[string]avg)
	oneMinuteSitUpsBoyDistribution := make(map[string]distribution4)
	oneMinuteSitUpsGirlDistribution := make(map[string]distribution4)
	oneMinuteSitUpsAvgDistribution := make(map[string]distribution4)
	shuttleRunAvgMap := make(map[string]avg)
	shuttleRunBoyMap := make(map[string]avg)
	shuttleRunGirlMap := make(map[string]avg)
	shuttleRun2AvgMap := make(map[string]avg)
	shuttleRun2BoyMap := make(map[string]avg)
	shuttleRun2GirlMap := make(map[string]avg)
	shuttleRunScoreAvgMap := make(map[string]avg)
	shuttleRunScoreBoyMap := make(map[string]avg)
	shuttleRunScoreGirlMap := make(map[string]avg)
	shuttleRunScore2AvgMap := make(map[string]avg)
	shuttleRunScore2BoyMap := make(map[string]avg)
	shuttleRunScore2GirlMap := make(map[string]avg)
	shuttleRunBoyDistribution := make(map[string]distribution4)
	shuttleRunGirlDistribution := make(map[string]distribution4)
	shuttleRunAvgDistribution := make(map[string]distribution4)
	gripAvgMap := make(map[string]avg)
	gripBoyMap := make(map[string]avg)
	gripGirlMap := make(map[string]avg)
	grip2AvgMap := make(map[string]avg)
	grip2BoyMap := make(map[string]avg)
	grip2GirlMap := make(map[string]avg)
	gripBoyDistribution := make(map[string]distribution4)
	gripGirlDistribution := make(map[string]distribution4)
	gripAvgDistribution := make(map[string]distribution4)
	reactionSpeedAvgMap := make(map[string]avg)
	reactionSpeedBoyMap := make(map[string]avg)
	reactionSpeedGirlMap := make(map[string]avg)
	reactionSpeed2AvgMap := make(map[string]avg)
	reactionSpeed2BoyMap := make(map[string]avg)
	reactionSpeed2GirlMap := make(map[string]avg)
	reactionSpeedBoyDistribution := make(map[string]distribution4)
	reactionSpeedGirlDistribution := make(map[string]distribution4)
	reactionSpeedAvgDistribution := make(map[string]distribution4)
	verticalJumpAvgMap := make(map[string]avg)
	verticalJumpBoyMap := make(map[string]avg)
	verticalJumpGirlMap := make(map[string]avg)
	verticalJump2AvgMap := make(map[string]avg)
	verticalJump2BoyMap := make(map[string]avg)
	verticalJump2GirlMap := make(map[string]avg)
	verticalJumpBoyDistribution := make(map[string]distribution4)
	verticalJumpGirlDistribution := make(map[string]distribution4)
	verticalJumpAvgDistribution := make(map[string]distribution4)
	balanceAbilityAvgMap := make(map[string]avg)
	balanceAbilityBoyMap := make(map[string]avg)
	balanceAbilityGirlMap := make(map[string]avg)
	balanceAbility2AvgMap := make(map[string]avg)
	balanceAbility2BoyMap := make(map[string]avg)
	balanceAbility2GirlMap := make(map[string]avg)
	balanceAbilityBoyDistribution := make(map[string]distribution4)
	balanceAbilityGirlDistribution := make(map[string]distribution4)
	balanceAbilityAvgDistribution := make(map[string]distribution4)
	var boyDistribution4, girlDistribution4, avgDistribution4 distribution4
	for i := 0; i < len(scores); i++ {
		if scores[i].MissingTestNum == 0 {
			scoreAvg.add(scores[i].PhysicalTotalScore.Float64)
			avgDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				boyScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				boyDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				girlScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				girlDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].BodyFat.Valid || scores[i].GripStrength.Valid || scores[i].ResponseCapability.Valid || scores[i].BalanceAbility.Valid || scores[i].VerticalJump.Valid {
			reportData.SchoolInfo.HasExtension = true
		}
		if scores[i].ShuttleRun.Valid {
			reportData.GradeInfo.HasShuttleRun = true
		}
		if scores[i].VerticalJump.Valid {
			reportData.GradeInfo.HasVerticalJump = true
		}
		if scores[i].OneMinuteSitUp.Valid {
			reportData.GradeInfo.HasOneMinuteSitUps = true
		}
		class, _ := strconv.ParseInt(scores[i].Class[5:7], 10, 64)
		classStr := strconv.FormatInt(class, 10) + "班"
		classesMap[classStr] = 0
		scores[i].Class = classStr
		avgMapAdd(classStr, scores[i].PhysicalTotalScore.Float64, &classScoreMap)
		avgMapAdd("总体", scores[i].PhysicalTotalScore.Float64, &classScoreMap)
		avgMapAdd(classStr, math.Pow(scores[i].PhysicalTotalScore.Float64, 2), &classScore2Map)
		avgMapAdd("总体", math.Pow(scores[i].PhysicalTotalScore.Float64, 2), &classScore2Map)
		eachInfo := studentNumMap[classStr]
		if scores[i].Sex == 1 {
			eachInfo.Boy++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					eachInfo.BoyPrivilege++
				} else {
					eachInfo.BoyAbsent++
				}
			}
		} else if scores[i].Sex == 2 {
			eachInfo.Girl++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					eachInfo.GirlPrivilege++
				} else {
					eachInfo.GirlAbsent++
				}
			}
		}
		studentNumMap[classStr] = eachInfo
		if studentMap[classStr] == nil {
			studentMap[classStr] = make(map[string]map[string]interface{})
		}
		if studentMap[classStr][scores[i].SchoolRollId] == nil {
			studentMap[classStr][scores[i].SchoolRollId] = make(map[string]interface{})
		}
		student := new(entity.Student)
		err = student.SelectAllBySchoolRollId(scores[i].SchoolRollId)
		if err != nil {
			return err, ""
		}
		studentMap[classStr][scores[i].SchoolRollId]["姓名"] = student.Name
		studentMap[classStr][scores[i].SchoolRollId]["总分"] = scores[i].PhysicalTotalScore.Float64
		if student.Sex == 1 {
			studentMap[classStr][scores[i].SchoolRollId]["性别"] = "男"
		} else if student.Sex == 2 {
			studentMap[classStr][scores[i].SchoolRollId]["性别"] = "女"
		}
		if scores[i].BodyMassIndexLevel.Valid {
			if scores[i].BodyMassIndexLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["体重指数"] = scores[i].BodyMassIndexTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["体重指数"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["体重指数"] = float64(-2)
		}
		if scores[i].VitalCapacityLevel.Valid {
			if scores[i].VitalCapacityLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["肺活量"] = scores[i].VitalCapacityTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["肺活量"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["肺活量"] = float64(-2)
		}
		if scores[i].FiftyMetersLevel.Valid {
			if scores[i].FiftyMetersLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["50米跑"] = scores[i].FiftyMetersTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["50米跑"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["50米跑"] = float64(-2)
		}
		if scores[i].SitAndReachLevel.Valid {
			if scores[i].FiftyMetersLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["坐位体前屈"] = scores[i].SitAndReachTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["坐位体前屈"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["坐位体前屈"] = float64(-2)
		}
		if scores[i].ShuttleRunLevel.Valid {
			if scores[i].ShuttleRunLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["50米×8往返跑"] = scores[i].ShuttleRunTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["50米×8往返跑"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["50米×8往返跑"] = float64(-2)
		}
		if scores[i].OneMinuteSitUpLevel.Valid {
			if scores[i].OneMinuteSitUpLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = scores[i].OneMinuteSitUpTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = float64(-2)
		}
		if scores[i].OneMinuteRopeSkippingLevel.Valid {
			if scores[i].OneMinuteRopeSkippingLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟跳绳"] = scores[i].OneMinuteRopeSkippingTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟跳绳"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["一分钟跳绳"] = float64(-2)
		}
		if scores[i].BodyMassIndex.Valid {
			itemMap["体重指数"] = 0
		}
		if scores[i].VitalCapacity.Valid {
			itemMap["肺活量"] = 0
		}
		if scores[i].FiftyMeters.Valid {
			itemMap["50米跑"] = 0
		}
		if scores[i].SitAndReach.Valid {
			itemMap["坐位体前屈"] = 0
		}
		if scores[i].ShuttleRun.Valid {
			itemMap["50米×8往返跑"] = 0
		}
		if scores[i].OneMinuteSitUp.Valid {
			itemMap["一分钟仰卧起坐"] = 0
		}
		if scores[i].OneMinuteRopeSkipping.Valid {
			itemMap["一分钟跳绳"] = 0
		}
		if scores[i].Height.Valid {
			avgMapAdd(classStr, scores[i].Height.Float64, &heightAvgMap)
			avgMapAdd("总体", scores[i].Height.Float64, &heightAvgMap)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].Height.Float64, &heightBoyMap)
				avgMapAdd("总体", scores[i].Height.Float64, &heightBoyMap)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].Height.Float64, &heightGirlMap)
				avgMapAdd("总体", scores[i].Height.Float64, &heightGirlMap)
			}
		}
		if scores[i].Weight.Valid {
			avgMapAdd(classStr, scores[i].Weight.Float64, &weightAvgMap)
			avgMapAdd("总体", scores[i].Weight.Float64, &weightAvgMap)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].Weight.Float64, &weightBoyMap)
				avgMapAdd("总体", scores[i].Weight.Float64, &weightBoyMap)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].Weight.Float64, &weightGirlMap)
				avgMapAdd("总体", scores[i].Weight.Float64, &weightGirlMap)
			}
		}
		if scores[i].BodyMassIndex.Valid {
			avgMapAdd(classStr, scores[i].BodyMassIndex.Float64, &bodyMassIndexAvgMap)
			avgMapAdd("总体", scores[i].BodyMassIndex.Float64, &bodyMassIndexAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2AvgMap)
			avgMapAdd(classStr, scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreAvgMap)
			avgMapAdd("总体", scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2AvgMap)
			if bodyMassIndexAvgMaxMap[classStr] == nil {
				bodyMassIndexAvgMaxMap[classStr] = math.SmallestNonzeroFloat64
			}
			if bodyMassIndexAvgMaxMap["总体"] == nil {
				bodyMassIndexAvgMaxMap["总体"] = math.SmallestNonzeroFloat64
			}
			bodyMassIndexAvgMaxMap[classStr] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMaxMap[classStr].(float64))
			bodyMassIndexAvgMaxMap["总体"] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMaxMap["总体"].(float64))
			if bodyMassIndexAvgMinMap[classStr] == nil {
				bodyMassIndexAvgMinMap[classStr] = math.MaxFloat64
			}
			if bodyMassIndexAvgMinMap["总体"] == nil {
				bodyMassIndexAvgMinMap["总体"] = math.MaxFloat64
			}
			distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", classStr, &bodyMassIndexAvgDistribution)
			distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", "总体", &bodyMassIndexAvgDistribution)
			bodyMassIndexAvgMinMap[classStr] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMinMap[classStr].(float64))
			bodyMassIndexAvgMinMap["总体"] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMinMap["总体"].(float64))

			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].BodyMassIndex.Float64, &bodyMassIndexBoyMap)
				avgMapAdd("总体", scores[i].BodyMassIndex.Float64, &bodyMassIndexBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2BoyMap)
				avgMapAdd(classStr, scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreBoyMap)
				avgMapAdd("总体", scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2BoyMap)
				if bodyMassIndexBoyMaxMap[classStr] == nil {
					bodyMassIndexBoyMaxMap[classStr] = math.SmallestNonzeroFloat64
				}
				if bodyMassIndexBoyMaxMap["总体"] == nil {
					bodyMassIndexBoyMaxMap["总体"] = math.SmallestNonzeroFloat64
				}
				bodyMassIndexBoyMaxMap[classStr] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMaxMap[classStr].(float64))
				bodyMassIndexBoyMaxMap["总体"] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMaxMap["总体"].(float64))
				if bodyMassIndexBoyMinMap[classStr] == nil {
					bodyMassIndexBoyMinMap[classStr] = math.MaxFloat64
				}
				if bodyMassIndexBoyMinMap["总体"] == nil {
					bodyMassIndexBoyMinMap["总体"] = math.MaxFloat64
				}
				bodyMassIndexBoyMinMap[classStr] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMinMap[classStr].(float64))
				bodyMassIndexBoyMinMap["总体"] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMinMap["总体"].(float64))
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", classStr, &bodyMassIndexBoyDistribution)
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", "总体", &bodyMassIndexBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].BodyMassIndex.Float64, &bodyMassIndexGirlMap)
				avgMapAdd("总体", scores[i].BodyMassIndex.Float64, &bodyMassIndexGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2GirlMap)
				avgMapAdd(classStr, scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreGirlMap)
				avgMapAdd("总体", scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2GirlMap)
				if bodyMassIndexGirlMaxMap[classStr] == nil {
					bodyMassIndexGirlMaxMap[classStr] = math.SmallestNonzeroFloat64
				}
				if bodyMassIndexGirlMaxMap["总体"] == nil {
					bodyMassIndexGirlMaxMap["总体"] = math.SmallestNonzeroFloat64
				}
				bodyMassIndexGirlMaxMap[classStr] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMaxMap[classStr].(float64))
				bodyMassIndexGirlMaxMap["总体"] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMaxMap["总体"].(float64))
				if bodyMassIndexGirlMinMap[classStr] == nil {
					bodyMassIndexGirlMinMap[classStr] = math.MaxFloat64
				}
				if bodyMassIndexGirlMinMap["总体"] == nil {
					bodyMassIndexGirlMinMap["总体"] = math.MaxFloat64
				}
				bodyMassIndexGirlMinMap[classStr] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMinMap[classStr].(float64))
				bodyMassIndexGirlMinMap["总体"] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMinMap["总体"].(float64))
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", classStr, &bodyMassIndexGirlDistribution)
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", "总体", &bodyMassIndexGirlDistribution)
			}
		}
		if scores[i].BodyFat.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].BodyFat.Float64, &bodyFatAvgMap)
			avgMapAdd("总体", scores[i].BodyFat.Float64, &bodyFatAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2AvgMap)
			distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", classStr, &bodyFatAvgDistribution)
			distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", "总体", &bodyFatAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].BodyFat.Float64, &bodyFatBoyMap)
				avgMapAdd("总体", scores[i].BodyFat.Float64, &bodyFatBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2BoyMap)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", classStr, &bodyFatBoyDistribution)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", "总体", &bodyFatBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].BodyFat.Float64, &bodyFatGirlMap)
				avgMapAdd("总体", scores[i].BodyFat.Float64, &bodyFatGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2GirlMap)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", classStr, &bodyFatGirlDistribution)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", "总体", &bodyFatGirlDistribution)
			}
		}
		if scores[i].VitalCapacity.Valid {
			avgMapAdd(classStr, scores[i].VitalCapacity.Float64, &vitalCapacityAvgMap)
			avgMapAdd("总体", scores[i].VitalCapacity.Float64, &vitalCapacityAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2AvgMap)
			avgMapAdd(classStr, scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreAvgMap)
			avgMapAdd("总体", scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2AvgMap)
			distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, classStr, &vitalCapacityAvgDistribution)
			distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, "总体", &vitalCapacityAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].VitalCapacity.Float64, &vitalCapacityBoyMap)
				avgMapAdd("总体", scores[i].VitalCapacity.Float64, &vitalCapacityBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2BoyMap)
				avgMapAdd(classStr, scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreBoyMap)
				avgMapAdd("总体", scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2BoyMap)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, classStr, &vitalCapacityBoyDistribution)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, "总体", &vitalCapacityBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].VitalCapacity.Float64, &vitalCapacityGirlMap)
				avgMapAdd("总体", scores[i].VitalCapacity.Float64, &vitalCapacityGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2GirlMap)
				avgMapAdd(classStr, scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreGirlMap)
				avgMapAdd("总体", scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2GirlMap)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, classStr, &vitalCapacityGirlDistribution)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, "总体", &vitalCapacityGirlDistribution)
			}
		}
		if scores[i].FiftyMeters.Valid {
			avgMapAdd(classStr, scores[i].FiftyMeters.Float64, &fiftyMetersAvgMap)
			avgMapAdd("总体", scores[i].FiftyMeters.Float64, &fiftyMetersAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2AvgMap)
			avgMapAdd(classStr, scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreAvgMap)
			avgMapAdd("总体", scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2AvgMap)
			distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, classStr, &fiftyMetersAvgDistribution)
			distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, "总体", &fiftyMetersAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].FiftyMeters.Float64, &fiftyMetersBoyMap)
				avgMapAdd("总体", scores[i].FiftyMeters.Float64, &fiftyMetersBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2BoyMap)
				avgMapAdd(classStr, scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreBoyMap)
				avgMapAdd("总体", scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2BoyMap)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, classStr, &fiftyMetersBoyDistribution)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, "总体", &fiftyMetersBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].FiftyMeters.Float64, &fiftyMetersGirlMap)
				avgMapAdd("总体", scores[i].FiftyMeters.Float64, &fiftyMetersGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2GirlMap)
				avgMapAdd(classStr, scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreGirlMap)
				avgMapAdd("总体", scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2GirlMap)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, classStr, &fiftyMetersGirlDistribution)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, "总体", &fiftyMetersGirlDistribution)
			}
		}
		if scores[i].SitAndReach.Valid {
			avgMapAdd(classStr, scores[i].SitAndReach.Float64, &sitAndReachAvgMap)
			avgMapAdd("总体", scores[i].SitAndReach.Float64, &sitAndReachAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2AvgMap)
			avgMapAdd(classStr, scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreAvgMap)
			avgMapAdd("总体", scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2AvgMap)
			distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, classStr, &sitAndReachAvgDistribution)
			distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, "总体", &sitAndReachAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].SitAndReach.Float64, &sitAndReachBoyMap)
				avgMapAdd("总体", scores[i].SitAndReach.Float64, &sitAndReachBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2BoyMap)
				avgMapAdd(classStr, scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreBoyMap)
				avgMapAdd("总体", scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2BoyMap)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, classStr, &sitAndReachBoyDistribution)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, "总体", &sitAndReachBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].SitAndReach.Float64, &sitAndReachGirlMap)
				avgMapAdd("总体", scores[i].SitAndReach.Float64, &sitAndReachGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2GirlMap)
				avgMapAdd(classStr, scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreGirlMap)
				avgMapAdd("总体", scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2GirlMap)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, classStr, &sitAndReachGirlDistribution)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, "总体", &sitAndReachGirlDistribution)
			}
		}
		if scores[i].OneMinuteRopeSkipping.Valid {
			avgMapAdd(classStr, scores[i].OneMinuteRopeSkipping.Float64, &oneMinuteSkippingAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteRopeSkipping.Float64, &oneMinuteSkippingAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteRopeSkipping.Float64, 2), &oneMinuteSkipping2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteRopeSkipping.Float64, 2), &oneMinuteSkipping2AvgMap)
			avgMapAdd(classStr, scores[i].OneMinuteRopeSkippingTotalScore.Float64, &oneMinuteSkippingScoreAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteRopeSkippingTotalScore.Float64, &oneMinuteSkippingScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 2), &oneMinuteSkippingScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 2), &oneMinuteSkippingScore2AvgMap)
			distributionMapAdd(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSkippingAvgDistribution)
			distributionMapAdd(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSkippingAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].OneMinuteRopeSkipping.Float64, &oneMinuteSkippingBoyMap)
				avgMapAdd("总体", scores[i].OneMinuteRopeSkipping.Float64, &oneMinuteSkippingBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteRopeSkipping.Float64, 2), &oneMinuteSkipping2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteRopeSkipping.Float64, 2), &oneMinuteSkipping2BoyMap)
				avgMapAdd(classStr, scores[i].OneMinuteRopeSkippingTotalScore.Float64, &oneMinuteSkippingScoreBoyMap)
				avgMapAdd("总体", scores[i].OneMinuteRopeSkippingTotalScore.Float64, &oneMinuteSkippingScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 2), &oneMinuteSkippingScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 2), &oneMinuteSkippingScore2BoyMap)
				distributionMapAdd(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSkippingBoyDistribution)
				distributionMapAdd(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSkippingBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].OneMinuteRopeSkipping.Float64, &oneMinuteSkippingGirlMap)
				avgMapAdd("总体", scores[i].OneMinuteRopeSkipping.Float64, &oneMinuteSkippingGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteRopeSkipping.Float64, 2), &oneMinuteSkipping2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteRopeSkipping.Float64, 2), &oneMinuteSkipping2GirlMap)
				avgMapAdd(classStr, scores[i].OneMinuteRopeSkippingTotalScore.Float64, &oneMinuteSkippingScoreGirlMap)
				avgMapAdd("总体", scores[i].OneMinuteRopeSkippingTotalScore.Float64, &oneMinuteSkippingScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 2), &oneMinuteSkippingScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 2), &oneMinuteSkippingScore2GirlMap)
				distributionMapAdd(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSkippingGirlDistribution)
				distributionMapAdd(scores[i].OneMinuteRopeSkippingTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSkippingGirlDistribution)
			}
		}
		if scores[i].OneMinuteSitUp.Valid {
			avgMapAdd(classStr, scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2AvgMap)
			avgMapAdd(classStr, scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2AvgMap)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSitUpsAvgDistribution)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSitUpsAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsBoyMap)
				avgMapAdd("总体", scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2BoyMap)
				avgMapAdd(classStr, scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreBoyMap)
				avgMapAdd("总体", scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2BoyMap)
				distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSitUpsBoyDistribution)
				distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSitUpsBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsGirlMap)
				avgMapAdd("总体", scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2GirlMap)
				avgMapAdd(classStr, scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreGirlMap)
				avgMapAdd("总体", scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2GirlMap)
				distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSitUpsGirlDistribution)
				distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSitUpsGirlDistribution)
			}
		}
		if scores[i].ShuttleRun.Valid {
			avgMapAdd(classStr, scores[i].ShuttleRun.Float64, &shuttleRunAvgMap)
			avgMapAdd("总体", scores[i].ShuttleRun.Float64, &shuttleRunAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].ShuttleRun.Float64, 2), &shuttleRun2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].ShuttleRun.Float64, 2), &shuttleRun2AvgMap)
			avgMapAdd(classStr, scores[i].ShuttleRunTotalScore.Float64, &shuttleRunScoreAvgMap)
			avgMapAdd("总体", scores[i].ShuttleRunTotalScore.Float64, &shuttleRunScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].ShuttleRunTotalScore.Float64, 2), &shuttleRunScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].ShuttleRunTotalScore.Float64, 2), &shuttleRunScore2AvgMap)
			distributionMapAdd(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60, classStr, &shuttleRunAvgDistribution)
			distributionMapAdd(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60, "总体", &shuttleRunAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].ShuttleRun.Float64, &shuttleRunBoyMap)
				avgMapAdd("总体", scores[i].ShuttleRun.Float64, &shuttleRunBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].ShuttleRun.Float64, 2), &shuttleRun2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].ShuttleRun.Float64, 2), &shuttleRun2BoyMap)
				avgMapAdd(classStr, scores[i].ShuttleRunTotalScore.Float64, &shuttleRunScoreBoyMap)
				avgMapAdd("总体", scores[i].ShuttleRunTotalScore.Float64, &shuttleRunScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].ShuttleRunTotalScore.Float64, 2), &shuttleRunScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].ShuttleRunTotalScore.Float64, 2), &shuttleRunScore2BoyMap)
				distributionMapAdd(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60, classStr, &shuttleRunBoyDistribution)
				distributionMapAdd(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60, "总体", &shuttleRunBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].ShuttleRun.Float64, &shuttleRunGirlMap)
				avgMapAdd("总体", scores[i].ShuttleRun.Float64, &shuttleRunGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].ShuttleRun.Float64, 2), &shuttleRun2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].ShuttleRun.Float64, 2), &shuttleRun2GirlMap)
				avgMapAdd(classStr, scores[i].ShuttleRunTotalScore.Float64, &shuttleRunScoreGirlMap)
				avgMapAdd("总体", scores[i].ShuttleRunTotalScore.Float64, &shuttleRunScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].ShuttleRunTotalScore.Float64, 2), &shuttleRunScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].ShuttleRunTotalScore.Float64, 2), &shuttleRunScore2GirlMap)
				distributionMapAdd(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60, classStr, &shuttleRunGirlDistribution)
				distributionMapAdd(scores[i].ShuttleRunTotalScore.Float64, 90, 80, 60, "总体", &shuttleRunGirlDistribution)
			}
		}
		if scores[i].GripStrength.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].GripStrength.Float64, &gripAvgMap)
			avgMapAdd("总体", scores[i].GripStrength.Float64, &gripAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].GripStrength.Float64, 2), &grip2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].GripStrength.Float64, 2), &grip2AvgMap)
			distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", classStr, &gripAvgDistribution)
			distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", "总体", &gripAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].GripStrength.Float64, &gripBoyMap)
				avgMapAdd("总体", scores[i].GripStrength.Float64, &gripBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].GripStrength.Float64, 2), &grip2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].GripStrength.Float64, 2), &grip2BoyMap)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", classStr, &gripBoyDistribution)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", "总体", &gripBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].GripStrength.Float64, &gripGirlMap)
				avgMapAdd("总体", scores[i].GripStrength.Float64, &gripGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].GripStrength.Float64, 2), &grip2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].GripStrength.Float64, 2), &grip2GirlMap)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", classStr, &gripGirlDistribution)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", "总体", &gripGirlDistribution)
			}
		}
		if scores[i].ResponseCapability.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].ResponseCapability.Float64, &reactionSpeedAvgMap)
			avgMapAdd("总体", scores[i].ResponseCapability.Float64, &reactionSpeedAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2AvgMap)
			distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &reactionSpeedAvgDistribution)
			distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &reactionSpeedAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].ResponseCapability.Float64, &reactionSpeedBoyMap)
				avgMapAdd("总体", scores[i].ResponseCapability.Float64, &reactionSpeedBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2BoyMap)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &reactionSpeedBoyDistribution)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &reactionSpeedBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].ResponseCapability.Float64, &reactionSpeedGirlMap)
				avgMapAdd("总体", scores[i].ResponseCapability.Float64, &reactionSpeedGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2GirlMap)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &reactionSpeedGirlDistribution)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &reactionSpeedGirlDistribution)
			}
		}
		if scores[i].VerticalJump.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].VerticalJump.Float64, &verticalJumpAvgMap)
			avgMapAdd("总体", scores[i].VerticalJump.Float64, &verticalJumpAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2AvgMap)
			distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", classStr, &verticalJumpAvgDistribution)
			distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", "总体", &verticalJumpAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].VerticalJump.Float64, &verticalJumpBoyMap)
				avgMapAdd("总体", scores[i].VerticalJump.Float64, &verticalJumpBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2BoyMap)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", classStr, &verticalJumpBoyDistribution)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", "总体", &verticalJumpBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].VerticalJump.Float64, &verticalJumpGirlMap)
				avgMapAdd("总体", scores[i].VerticalJump.Float64, &verticalJumpGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2GirlMap)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", classStr, &verticalJumpGirlDistribution)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", "总体", &verticalJumpGirlDistribution)
			}
		}
		if scores[i].BalanceAbility.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].BalanceAbility.Float64, &balanceAbilityAvgMap)
			avgMapAdd("总体", scores[i].BalanceAbility.Float64, &balanceAbilityAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2AvgMap)
			distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &balanceAbilityAvgDistribution)
			distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &balanceAbilityAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].BalanceAbility.Float64, &balanceAbilityBoyMap)
				avgMapAdd("总体", scores[i].BalanceAbility.Float64, &balanceAbilityBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2BoyMap)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &balanceAbilityBoyDistribution)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &balanceAbilityBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].BalanceAbility.Float64, &balanceAbilityGirlMap)
				avgMapAdd("总体", scores[i].BalanceAbility.Float64, &balanceAbilityGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2GirlMap)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &balanceAbilityGirlDistribution)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &balanceAbilityGirlDistribution)
			}
		}
	}
	reportData.GradeInfo.Score = scoreAvg.calculate()
	if reportData.GradeInfo.Score >= 90 {
		reportData.GradeInfo.Level = "优"
	} else if reportData.GradeInfo.Score >= 80 {
		reportData.GradeInfo.Level = "良"
	} else if reportData.GradeInfo.Score >= 60 {
		reportData.GradeInfo.Level = "中"
	} else {
		reportData.GradeInfo.Level = "差"
	}
	var classes []string
	var items []string
	for k := range classesMap {
		classes = append(classes, k)
	}
	for k := range itemMap {
		items = append(items, k)
	}
	items = []string{"总分", "肺活量", "50米跑", "坐位体前屈", "一分钟跳绳", "一分钟仰卧起坐", "50米×8往返跑"}
	classesMap["总体"] = len(classes)
	itemMap["总分"] = len(items)
	for i := 0; i < len(classes); i++ {
		if len(classes[i]) != 5 {
			classes[i] = "0" + classes[i]
		}
	}
	sort.Strings(classes)
	for i := 0; i < len(classes); i++ {
		if classes[i][0] == '0' {
			classes[i] = classes[i][1:]
		}
	}
	for i := 0; i < len(classes); i++ {
		classesMap[classes[i]] = i
	}
	for i := 0; i < len(items); i++ {
		itemMap[items[i]] = i
	}
	reportData.GradeInfo.Classes = append(classes, "总体")
	reportData.GradeInfo.ClassesScore = make([]float64, len(reportData.GradeInfo.Classes))
	reportData.GradeInfo.ClassesStandardDeviation = make([]float64, len(reportData.GradeInfo.Classes))
	reportData.StudentNum.IndexName = classes
	reportData.StudentNum.EachInfo = make([]studentNumEachInfo, len(reportData.StudentNum.IndexName))
	reportData.StudentInfo.IndexName = classes
	reportData.StudentInfo.Items = items
	reportData.StudentInfo.EachInfo = make([]studentInfoEachInfo, len(classes))
	reportData.Height.IndexName = append(classes, "总体")
	reportData.Height.EachInfo = make([]item1EachInfo, len(classes)+1)
	reportData.Weight.IndexName = append(classes, "总体")
	reportData.Weight.EachInfo = make([]item1EachInfo, len(classes)+1)
	reportData.BodyMassIndex.IndexName = append(classes, "总体")
	reportData.BodyMassIndex.EachInfo = make([]item5EachInfo, len(classes)+1)
	reportData.BodyFat.IndexName = append(classes, "总体")
	reportData.BodyFat.EachInfo = make([]item6EachInfo, len(classes)+1)
	reportData.VitalCapacity.IndexName = append(classes, "总体")
	reportData.VitalCapacity.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.FiftyMeter.IndexName = append(classes, "总体")
	reportData.FiftyMeter.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.SitAndReach.IndexName = append(classes, "总体")
	reportData.SitAndReach.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.OneMinuteSkipping.IndexName = append(classes, "总体")
	reportData.OneMinuteSkipping.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.OneMinuteSitUps.IndexName = append(classes, "总体")
	reportData.OneMinuteSitUps.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.ShuttleRun.IndexName = append(classes, "总体")
	reportData.ShuttleRun.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.Grip.IndexName = append(classes, "总体")
	reportData.Grip.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.ReactionSpeed.IndexName = append(classes, "总体")
	reportData.ReactionSpeed.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.VerticalJump.IndexName = append(classes, "总体")
	reportData.VerticalJump.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.BalanceAbility.IndexName = append(classes, "总体")
	reportData.BalanceAbility.EachInfo = make([]item7EachInfo, len(classes)+1)
	for i := 0; i < len(classes)+1; i++ {
		str := reportData.GradeInfo.Classes[i]
		index := classesMap[reportData.GradeInfo.Classes[i]]
		reportData.GradeInfo.ClassesScore[index] = avgMapCalculate(str, &classScoreMap)
		reportData.GradeInfo.ClassesStandardDeviation[index] = math.Sqrt(avgMapCalculate(str, &classScore2Map) - math.Pow(reportData.GradeInfo.ClassesScore[index], 2))
		reportData.Height.EachInfo[index].Boy.Result = avgMapCalculate(str, &heightBoyMap)
		reportData.Height.EachInfo[index].Girl.Result = avgMapCalculate(str, &heightGirlMap)
		reportData.Height.EachInfo[index].Avg.Result = avgMapCalculate(str, &heightAvgMap)
		reportData.Weight.EachInfo[index].Boy.Result = avgMapCalculate(str, &weightBoyMap)
		reportData.Weight.EachInfo[index].Girl.Result = avgMapCalculate(str, &weightGirlMap)
		reportData.Weight.EachInfo[index].Avg.Result = avgMapCalculate(str, &weightAvgMap)
		reportData.BodyMassIndex.EachInfo[index].Boy.Result = avgMapCalculate(str, &bodyMassIndexBoyMap)
		reportData.BodyMassIndex.EachInfo[index].Girl.Result = avgMapCalculate(str, &bodyMassIndexGirlMap)
		reportData.BodyMassIndex.EachInfo[index].Avg.Result = avgMapCalculate(str, &bodyMassIndexAvgMap)
		reportData.BodyMassIndex.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndex2BoyMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Boy.Result, 2))
		reportData.BodyMassIndex.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndex2GirlMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Girl.Result, 2))
		reportData.BodyMassIndex.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndex2AvgMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Avg.Result, 2))
		reportData.BodyMassIndex.EachInfo[index].Boy.Score = avgMapCalculate(str, &bodyMassIndexScoreBoyMap)
		reportData.BodyMassIndex.EachInfo[index].Girl.Score = avgMapCalculate(str, &bodyMassIndexScoreGirlMap)
		reportData.BodyMassIndex.EachInfo[index].Avg.Score = avgMapCalculate(str, &bodyMassIndexScoreAvgMap)
		reportData.BodyMassIndex.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndexScore2BoyMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Boy.Score, 2))
		reportData.BodyMassIndex.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndexScore2GirlMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Girl.Score, 2))
		reportData.BodyMassIndex.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndexScore2AvgMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Avg.Score, 2))
		if bodyMassIndexBoyMaxMap[str] == nil {
			bodyMassIndexBoyMaxMap[str] = float64(0)
		}
		if bodyMassIndexBoyMaxMap["总体"] == nil {
			bodyMassIndexBoyMaxMap["总体"] = float64(0)
		}
		if bodyMassIndexBoyMinMap[str] == nil {
			bodyMassIndexBoyMinMap[str] = float64(0)
		}
		if bodyMassIndexBoyMinMap["总体"] == nil {
			bodyMassIndexBoyMinMap["总体"] = float64(0)
		}
		if bodyMassIndexGirlMaxMap[str] == nil {
			bodyMassIndexGirlMaxMap[str] = float64(0)
		}
		if bodyMassIndexGirlMaxMap["总体"] == nil {
			bodyMassIndexGirlMaxMap["总体"] = float64(0)
		}
		if bodyMassIndexGirlMinMap[str] == nil {
			bodyMassIndexGirlMinMap[str] = float64(0)
		}
		if bodyMassIndexGirlMinMap["总体"] == nil {
			bodyMassIndexGirlMinMap["总体"] = float64(0)
		}
		reportData.BodyMassIndex.EachInfo[index].Boy.Max = bodyMassIndexBoyMaxMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Boy.Min = bodyMassIndexBoyMinMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Girl.Max = bodyMassIndexGirlMaxMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Girl.Min = bodyMassIndexGirlMinMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Avg.Max = bodyMassIndexAvgMaxMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Avg.Min = bodyMassIndexAvgMinMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Boy.Percentage = distributionMapCalculate4(str, &bodyMassIndexBoyDistribution)
		reportData.BodyMassIndex.EachInfo[index].Girl.Percentage = distributionMapCalculate4(str, &bodyMassIndexGirlDistribution)
		reportData.BodyMassIndex.EachInfo[index].Avg.Percentage = distributionMapCalculate4(str, &bodyMassIndexAvgDistribution)
		reportData.BodyFat.EachInfo[index].Boy.Result = avgMapCalculate(str, &bodyFatBoyMap)
		reportData.BodyFat.EachInfo[index].Girl.Result = avgMapCalculate(str, &bodyFatGirlMap)
		reportData.BodyFat.EachInfo[index].Avg.Result = avgMapCalculate(str, &bodyFatAvgMap)
		reportData.BodyFat.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyFat2BoyMap) - math.Pow(reportData.BodyFat.EachInfo[index].Boy.Result, 2))
		reportData.BodyFat.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyFat2GirlMap) - math.Pow(reportData.BodyFat.EachInfo[index].Girl.Result, 2))
		reportData.BodyFat.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyFat2AvgMap) - math.Pow(reportData.BodyFat.EachInfo[index].Avg.Result, 2))
		reportData.BodyFat.EachInfo[index].Boy.Excess = distributionMapCustomCalculate4(1, str, &bodyFatBoyDistribution)
		reportData.BodyFat.EachInfo[index].Boy.Standard = distributionMapCustomCalculate4(2, str, &bodyFatBoyDistribution)
		reportData.BodyFat.EachInfo[index].Boy.LowStandard = distributionMapCustomCalculate4(3, str, &bodyFatBoyDistribution)
		reportData.BodyFat.EachInfo[index].Girl.Excess = distributionMapCustomCalculate4(1, str, &bodyFatGirlDistribution)
		reportData.BodyFat.EachInfo[index].Girl.Standard = distributionMapCustomCalculate4(2, str, &bodyFatGirlDistribution)
		reportData.BodyFat.EachInfo[index].Girl.LowStandard = distributionMapCustomCalculate4(3, str, &bodyFatGirlDistribution)
		reportData.BodyFat.EachInfo[index].Avg.Excess = distributionMapCustomCalculate4(1, str, &bodyFatAvgDistribution)
		reportData.BodyFat.EachInfo[index].Avg.Standard = distributionMapCustomCalculate4(2, str, &bodyFatAvgDistribution)
		reportData.BodyFat.EachInfo[index].Avg.LowStandard = distributionMapCustomCalculate4(3, str, &bodyFatAvgDistribution)
		reportData.VitalCapacity.EachInfo[index].Boy.Result = avgMapCalculate(str, &vitalCapacityBoyMap)
		reportData.VitalCapacity.EachInfo[index].Girl.Result = avgMapCalculate(str, &vitalCapacityGirlMap)
		reportData.VitalCapacity.EachInfo[index].Avg.Result = avgMapCalculate(str, &vitalCapacityAvgMap)
		reportData.VitalCapacity.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacity2BoyMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Boy.Result, 2))
		reportData.VitalCapacity.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacity2GirlMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Girl.Result, 2))
		reportData.VitalCapacity.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacity2AvgMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Avg.Result, 2))
		reportData.VitalCapacity.EachInfo[index].Boy.Score = avgMapCalculate(str, &vitalCapacityScoreBoyMap)
		reportData.VitalCapacity.EachInfo[index].Girl.Score = avgMapCalculate(str, &vitalCapacityScoreGirlMap)
		reportData.VitalCapacity.EachInfo[index].Avg.Score = avgMapCalculate(str, &vitalCapacityScoreAvgMap)
		reportData.VitalCapacity.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacityScore2BoyMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Boy.Score, 2))
		reportData.VitalCapacity.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacityScore2GirlMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Girl.Score, 2))
		reportData.VitalCapacity.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacityScore2AvgMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Avg.Score, 2))
		reportData.VitalCapacity.EachInfo[index].Boy.Nums = distributionCalculate5(str, &vitalCapacityBoyDistribution)
		reportData.VitalCapacity.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &vitalCapacityBoyDistribution)
		reportData.VitalCapacity.EachInfo[index].Girl.Nums = distributionCalculate5(str, &vitalCapacityGirlDistribution)
		reportData.VitalCapacity.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &vitalCapacityGirlDistribution)
		reportData.VitalCapacity.EachInfo[index].Avg.Nums = distributionCalculate5(str, &vitalCapacityAvgDistribution)
		reportData.VitalCapacity.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &vitalCapacityAvgDistribution)
		reportData.FiftyMeter.EachInfo[index].Boy.Result = avgMapCalculate(str, &fiftyMetersBoyMap)
		reportData.FiftyMeter.EachInfo[index].Girl.Result = avgMapCalculate(str, &fiftyMetersGirlMap)
		reportData.FiftyMeter.EachInfo[index].Avg.Result = avgMapCalculate(str, &fiftyMetersAvgMap)
		reportData.FiftyMeter.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMeters2BoyMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Boy.Result, 2))
		reportData.FiftyMeter.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMeters2GirlMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Girl.Result, 2))
		reportData.FiftyMeter.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMeters2AvgMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Avg.Result, 2))
		reportData.FiftyMeter.EachInfo[index].Boy.Score = avgMapCalculate(str, &fiftyMetersScoreBoyMap)
		reportData.FiftyMeter.EachInfo[index].Girl.Score = avgMapCalculate(str, &fiftyMetersScoreGirlMap)
		reportData.FiftyMeter.EachInfo[index].Avg.Score = avgMapCalculate(str, &fiftyMetersScoreAvgMap)
		reportData.FiftyMeter.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMetersScore2BoyMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Boy.Score, 2))
		reportData.FiftyMeter.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMetersScore2GirlMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Girl.Score, 2))
		reportData.FiftyMeter.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMetersScore2AvgMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Avg.Score, 2))
		reportData.FiftyMeter.EachInfo[index].Boy.Nums = distributionCalculate5(str, &fiftyMetersBoyDistribution)
		reportData.FiftyMeter.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &fiftyMetersBoyDistribution)
		reportData.FiftyMeter.EachInfo[index].Girl.Nums = distributionCalculate5(str, &fiftyMetersGirlDistribution)
		reportData.FiftyMeter.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &fiftyMetersGirlDistribution)
		reportData.FiftyMeter.EachInfo[index].Avg.Nums = distributionCalculate5(str, &fiftyMetersAvgDistribution)
		reportData.FiftyMeter.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &fiftyMetersAvgDistribution)
		reportData.SitAndReach.EachInfo[index].Boy.Result = avgMapCalculate(str, &sitAndReachBoyMap)
		reportData.SitAndReach.EachInfo[index].Girl.Result = avgMapCalculate(str, &sitAndReachGirlMap)
		reportData.SitAndReach.EachInfo[index].Avg.Result = avgMapCalculate(str, &sitAndReachAvgMap)
		reportData.SitAndReach.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReach2BoyMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Boy.Result, 2))
		reportData.SitAndReach.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReach2GirlMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Girl.Result, 2))
		reportData.SitAndReach.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReach2AvgMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Avg.Result, 2))
		reportData.SitAndReach.EachInfo[index].Boy.Score = avgMapCalculate(str, &sitAndReachScoreBoyMap)
		reportData.SitAndReach.EachInfo[index].Girl.Score = avgMapCalculate(str, &sitAndReachScoreGirlMap)
		reportData.SitAndReach.EachInfo[index].Avg.Score = avgMapCalculate(str, &sitAndReachScoreAvgMap)
		reportData.SitAndReach.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReachScore2BoyMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Boy.Score, 2))
		reportData.SitAndReach.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReachScore2GirlMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Girl.Score, 2))
		reportData.SitAndReach.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReachScore2AvgMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Avg.Score, 2))
		reportData.SitAndReach.EachInfo[index].Boy.Nums = distributionCalculate5(str, &sitAndReachBoyDistribution)
		reportData.SitAndReach.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &sitAndReachBoyDistribution)
		reportData.SitAndReach.EachInfo[index].Girl.Nums = distributionCalculate5(str, &sitAndReachGirlDistribution)
		reportData.SitAndReach.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &sitAndReachGirlDistribution)
		reportData.SitAndReach.EachInfo[index].Avg.Nums = distributionCalculate5(str, &sitAndReachAvgDistribution)
		reportData.SitAndReach.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &sitAndReachAvgDistribution)
		reportData.OneMinuteSkipping.EachInfo[index].Boy.Result = avgMapCalculate(str, &oneMinuteSkippingBoyMap)
		reportData.OneMinuteSkipping.EachInfo[index].Girl.Result = avgMapCalculate(str, &oneMinuteSkippingGirlMap)
		reportData.OneMinuteSkipping.EachInfo[index].Avg.Result = avgMapCalculate(str, &oneMinuteSkippingAvgMap)
		reportData.OneMinuteSkipping.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSkipping2BoyMap) - math.Pow(reportData.OneMinuteSkipping.EachInfo[index].Boy.Result, 2))
		reportData.OneMinuteSkipping.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSkipping2GirlMap) - math.Pow(reportData.OneMinuteSkipping.EachInfo[index].Girl.Result, 2))
		reportData.OneMinuteSkipping.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSkipping2AvgMap) - math.Pow(reportData.OneMinuteSkipping.EachInfo[index].Avg.Result, 2))
		reportData.OneMinuteSkipping.EachInfo[index].Boy.Score = avgMapCalculate(str, &oneMinuteSkippingScoreBoyMap)
		reportData.OneMinuteSkipping.EachInfo[index].Girl.Score = avgMapCalculate(str, &oneMinuteSkippingScoreGirlMap)
		reportData.OneMinuteSkipping.EachInfo[index].Avg.Score = avgMapCalculate(str, &oneMinuteSkippingScoreAvgMap)
		reportData.OneMinuteSkipping.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSkippingScore2BoyMap) - math.Pow(reportData.OneMinuteSkipping.EachInfo[index].Boy.Score, 2))
		reportData.OneMinuteSkipping.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSkippingScore2GirlMap) - math.Pow(reportData.OneMinuteSkipping.EachInfo[index].Girl.Score, 2))
		reportData.OneMinuteSkipping.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSkippingScore2AvgMap) - math.Pow(reportData.OneMinuteSkipping.EachInfo[index].Avg.Score, 2))
		reportData.OneMinuteSkipping.EachInfo[index].Boy.Nums = distributionCalculate5(str, &oneMinuteSkippingBoyDistribution)
		reportData.OneMinuteSkipping.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &oneMinuteSkippingBoyDistribution)
		reportData.OneMinuteSkipping.EachInfo[index].Girl.Nums = distributionCalculate5(str, &oneMinuteSkippingGirlDistribution)
		reportData.OneMinuteSkipping.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &oneMinuteSkippingGirlDistribution)
		reportData.OneMinuteSkipping.EachInfo[index].Avg.Nums = distributionCalculate5(str, &oneMinuteSkippingAvgDistribution)
		reportData.OneMinuteSkipping.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &oneMinuteSkippingAvgDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Result = avgMapCalculate(str, &oneMinuteSitUpsBoyMap)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Result = avgMapCalculate(str, &oneMinuteSitUpsGirlMap)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Result = avgMapCalculate(str, &oneMinuteSitUpsAvgMap)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUps2BoyMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Boy.Result, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUps2GirlMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Girl.Result, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUps2AvgMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Avg.Result, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Score = avgMapCalculate(str, &oneMinuteSitUpsScoreBoyMap)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Score = avgMapCalculate(str, &oneMinuteSitUpsScoreGirlMap)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Score = avgMapCalculate(str, &oneMinuteSitUpsScoreAvgMap)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUpsScore2BoyMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Boy.Score, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUpsScore2GirlMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Girl.Score, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUpsScore2AvgMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Avg.Score, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Nums = distributionCalculate5(str, &oneMinuteSitUpsBoyDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &oneMinuteSitUpsBoyDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Nums = distributionCalculate5(str, &oneMinuteSitUpsGirlDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &oneMinuteSitUpsGirlDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Nums = distributionCalculate5(str, &oneMinuteSitUpsAvgDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &oneMinuteSitUpsAvgDistribution)
		reportData.ShuttleRun.EachInfo[index].Boy.Result = avgMapCalculate(str, &shuttleRunBoyMap)
		reportData.ShuttleRun.EachInfo[index].Girl.Result = avgMapCalculate(str, &shuttleRunGirlMap)
		reportData.ShuttleRun.EachInfo[index].Avg.Result = avgMapCalculate(str, &shuttleRunAvgMap)
		reportData.ShuttleRun.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &shuttleRun2BoyMap) - math.Pow(reportData.ShuttleRun.EachInfo[index].Boy.Result, 2))
		reportData.ShuttleRun.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &shuttleRun2GirlMap) - math.Pow(reportData.ShuttleRun.EachInfo[index].Girl.Result, 2))
		reportData.ShuttleRun.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &shuttleRun2AvgMap) - math.Pow(reportData.ShuttleRun.EachInfo[index].Avg.Result, 2))
		reportData.ShuttleRun.EachInfo[index].Boy.Score = avgMapCalculate(str, &shuttleRunScoreBoyMap)
		reportData.ShuttleRun.EachInfo[index].Girl.Score = avgMapCalculate(str, &shuttleRunScoreGirlMap)
		reportData.ShuttleRun.EachInfo[index].Avg.Score = avgMapCalculate(str, &shuttleRunScoreAvgMap)
		reportData.ShuttleRun.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &shuttleRunScore2BoyMap) - math.Pow(reportData.ShuttleRun.EachInfo[index].Boy.Score, 2))
		reportData.ShuttleRun.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &shuttleRunScore2GirlMap) - math.Pow(reportData.ShuttleRun.EachInfo[index].Girl.Score, 2))
		reportData.ShuttleRun.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &shuttleRunScore2AvgMap) - math.Pow(reportData.ShuttleRun.EachInfo[index].Avg.Score, 2))
		reportData.ShuttleRun.EachInfo[index].Boy.Nums = distributionCalculate5(str, &shuttleRunBoyDistribution)
		reportData.ShuttleRun.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &shuttleRunBoyDistribution)
		reportData.ShuttleRun.EachInfo[index].Girl.Nums = distributionCalculate5(str, &shuttleRunGirlDistribution)
		reportData.ShuttleRun.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &shuttleRunGirlDistribution)
		reportData.ShuttleRun.EachInfo[index].Avg.Nums = distributionCalculate5(str, &shuttleRunAvgDistribution)
		reportData.ShuttleRun.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &shuttleRunAvgDistribution)
		reportData.Grip.EachInfo[index].Boy.Result = avgMapCalculate(str, &gripBoyMap)
		reportData.Grip.EachInfo[index].Girl.Result = avgMapCalculate(str, &gripGirlMap)
		reportData.Grip.EachInfo[index].Avg.Result = avgMapCalculate(str, &gripAvgMap)
		reportData.Grip.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &grip2BoyMap) - math.Pow(reportData.Grip.EachInfo[index].Boy.Result, 2))
		reportData.Grip.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &grip2GirlMap) - math.Pow(reportData.Grip.EachInfo[index].Girl.Result, 2))
		reportData.Grip.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &grip2AvgMap) - math.Pow(reportData.Grip.EachInfo[index].Avg.Result, 2))
		reportData.Grip.EachInfo[index].Boy.Nums = distributionCalculate5(str, &gripBoyDistribution)
		reportData.Grip.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &gripBoyDistribution)
		reportData.Grip.EachInfo[index].Girl.Nums = distributionCalculate5(str, &gripGirlDistribution)
		reportData.Grip.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &gripGirlDistribution)
		reportData.Grip.EachInfo[index].Avg.Nums = distributionCalculate5(str, &gripAvgDistribution)
		reportData.Grip.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &gripAvgDistribution)
		reportData.ReactionSpeed.EachInfo[index].Boy.Result = avgMapCalculate(str, &reactionSpeedBoyMap)
		reportData.ReactionSpeed.EachInfo[index].Girl.Result = avgMapCalculate(str, &reactionSpeedGirlMap)
		reportData.ReactionSpeed.EachInfo[index].Avg.Result = avgMapCalculate(str, &reactionSpeedAvgMap)
		reportData.ReactionSpeed.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &reactionSpeed2BoyMap) - math.Pow(reportData.ReactionSpeed.EachInfo[index].Boy.Result, 2))
		reportData.ReactionSpeed.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &reactionSpeed2GirlMap) - math.Pow(reportData.ReactionSpeed.EachInfo[index].Girl.Result, 2))
		reportData.ReactionSpeed.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &reactionSpeed2AvgMap) - math.Pow(reportData.ReactionSpeed.EachInfo[index].Avg.Result, 2))
		reportData.ReactionSpeed.EachInfo[index].Boy.Nums = distributionCalculate5(str, &reactionSpeedBoyDistribution)
		reportData.ReactionSpeed.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &reactionSpeedBoyDistribution)
		reportData.ReactionSpeed.EachInfo[index].Girl.Nums = distributionCalculate5(str, &reactionSpeedGirlDistribution)
		reportData.ReactionSpeed.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &reactionSpeedGirlDistribution)
		reportData.ReactionSpeed.EachInfo[index].Avg.Nums = distributionCalculate5(str, &reactionSpeedAvgDistribution)
		reportData.ReactionSpeed.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &reactionSpeedAvgDistribution)
		reportData.VerticalJump.EachInfo[index].Boy.Result = avgMapCalculate(str, &verticalJumpBoyMap)
		reportData.VerticalJump.EachInfo[index].Girl.Result = avgMapCalculate(str, &verticalJumpGirlMap)
		reportData.VerticalJump.EachInfo[index].Avg.Result = avgMapCalculate(str, &verticalJumpAvgMap)
		reportData.VerticalJump.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &verticalJump2BoyMap) - math.Pow(reportData.VerticalJump.EachInfo[index].Boy.Result, 2))
		reportData.VerticalJump.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &verticalJump2GirlMap) - math.Pow(reportData.VerticalJump.EachInfo[index].Girl.Result, 2))
		reportData.VerticalJump.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &verticalJump2AvgMap) - math.Pow(reportData.VerticalJump.EachInfo[index].Avg.Result, 2))
		reportData.VerticalJump.EachInfo[index].Boy.Nums = distributionCalculate5(str, &verticalJumpBoyDistribution)
		reportData.VerticalJump.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &verticalJumpBoyDistribution)
		reportData.VerticalJump.EachInfo[index].Girl.Nums = distributionCalculate5(str, &verticalJumpGirlDistribution)
		reportData.VerticalJump.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &verticalJumpGirlDistribution)
		reportData.VerticalJump.EachInfo[index].Avg.Nums = distributionCalculate5(str, &verticalJumpAvgDistribution)
		reportData.VerticalJump.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &verticalJumpAvgDistribution)
		reportData.BalanceAbility.EachInfo[index].Boy.Result = avgMapCalculate(str, &balanceAbilityBoyMap)
		reportData.BalanceAbility.EachInfo[index].Girl.Result = avgMapCalculate(str, &balanceAbilityGirlMap)
		reportData.BalanceAbility.EachInfo[index].Avg.Result = avgMapCalculate(str, &balanceAbilityAvgMap)
		reportData.BalanceAbility.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &balanceAbility2BoyMap) - math.Pow(reportData.BalanceAbility.EachInfo[index].Boy.Result, 2))
		reportData.BalanceAbility.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &balanceAbility2GirlMap) - math.Pow(reportData.BalanceAbility.EachInfo[index].Girl.Result, 2))
		reportData.BalanceAbility.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &balanceAbility2AvgMap) - math.Pow(reportData.BalanceAbility.EachInfo[index].Avg.Result, 2))
		reportData.BalanceAbility.EachInfo[index].Boy.Nums = distributionCalculate5(str, &balanceAbilityBoyDistribution)
		reportData.BalanceAbility.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &balanceAbilityBoyDistribution)
		reportData.BalanceAbility.EachInfo[index].Girl.Nums = distributionCalculate5(str, &balanceAbilityGirlDistribution)
		reportData.BalanceAbility.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &balanceAbilityGirlDistribution)
		reportData.BalanceAbility.EachInfo[index].Avg.Nums = distributionCalculate5(str, &balanceAbilityAvgDistribution)
		reportData.BalanceAbility.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &balanceAbilityAvgDistribution)
	}
	for i := 0; i < len(classes); i++ {
		str := classes[i]
		index := classesMap[classes[i]]
		classStudent := studentMap[classes[i]]
		var schoolRollId []string
		reportData.StudentNum.EachInfo[index] = studentNumMap[str]
		reportData.StudentInfo.EachInfo[i].StudentNum = int64(len(classStudent))
		reportData.StudentInfo.EachInfo[i].StudentScores = make([]studentInfoEachInfoStudentScores, len(classStudent))
		for k := range classStudent {
			schoolRollId = append(schoolRollId, k)
		}
		sort.Strings(schoolRollId)
		for j := 0; j < len(schoolRollId); j++ {
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Number = schoolRollId[j]
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Name = classStudent[schoolRollId[j]]["姓名"].(string)
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Sex = classStudent[schoolRollId[j]]["性别"].(string)
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Scores = make([]float64, len(items))
			for k := 0; k < len(items); k++ {
				reportData.StudentInfo.EachInfo[i].StudentScores[j].Scores[k] = classStudent[schoolRollId[j]][items[k]].(float64)
			}
		}
	}
	reportData.GradeLevelInfo.Boy = boyDistribution4.calculate()
	reportData.GradeLevelInfo.Girl = girlDistribution4.calculate()
	reportData.GradeLevelInfo.Avg = avgDistribution4.calculate()
	reportData.EachScoreInfo.Total.BoyScore = boyScoreAvg.calculate()
	reportData.EachScoreInfo.Total.GirlScore = girlScoreAvg.calculate()
	reportData.EachScoreInfo.Total.AvgScore = scoreAvg.calculate()
	data, err := json.MarshalToString(reportData)
	return err, data
}

func generateHighGradeReport(school *entity.School, measurementDate time.Time, grade string) (err error, jsonStr string) {
	reportData := HighGrade{}
	reportData.Date = measurementDate.Format("2006-01")
	reportData.SchoolInfo.Area, err = util.GetCityAreaName(school.ProvinceId, school.CityId, school.AreaId)
	if err != nil {
		return err, ""
	}
	reportData.SchoolInfo.Name = school.Name
	reportData.SchoolInfo.Year = strconv.Itoa(measurementDate.Year())
	if entity.SchoolTypeMapCode[school.SchoolType] == "初" {
		reportData.SchoolInfo.SchoolType = 2
		if grade[1:2] == "1" {
			reportData.GradeInfo.Grade = "初一"
		} else if grade[1:2] == "2" {
			reportData.GradeInfo.Grade = "初二"
		} else if grade[1:2] == "3" {
			reportData.GradeInfo.Grade = "初三"
		}
	} else if entity.SchoolTypeMapCode[school.SchoolType] == "高" {
		reportData.SchoolInfo.SchoolType = 2
		if grade[1:2] == "1" {
			reportData.GradeInfo.Grade = "高一"
		} else if grade[1:2] == "2" {
			reportData.GradeInfo.Grade = "高二"
		} else if grade[1:2] == "3" {
			reportData.GradeInfo.Grade = "高三"
		}
	}
	var scores []entity.Score
	_, err = nspel.GetOrmEngine().QueryTable("score").Filter("school_id", school.Id).Filter("grade", grade).Filter("measurement_date", measurementDate.Format("2006-01-02")).All(&scores)
	if err != nil {
		return err, ""
	}
	var scoreAvg, boyScoreAvg, girlScoreAvg avg
	classesMap := make(map[string]int)
	classScoreMap := make(map[string]avg)
	classScore2Map := make(map[string]avg)
	studentNumMap := make(map[string]studentNumEachInfo)
	itemMap := make(map[string]int)
	studentMap := make(map[string]map[string]map[string]interface{})
	heightAvgMap := make(map[string]avg)
	heightBoyMap := make(map[string]avg)
	heightGirlMap := make(map[string]avg)
	weightAvgMap := make(map[string]avg)
	weightBoyMap := make(map[string]avg)
	weightGirlMap := make(map[string]avg)
	bodyMassIndexAvgMap := make(map[string]avg)
	bodyMassIndexBoyMap := make(map[string]avg)
	bodyMassIndexGirlMap := make(map[string]avg)
	bodyMassIndex2AvgMap := make(map[string]avg)
	bodyMassIndex2BoyMap := make(map[string]avg)
	bodyMassIndex2GirlMap := make(map[string]avg)
	bodyMassIndexScoreAvgMap := make(map[string]avg)
	bodyMassIndexScoreBoyMap := make(map[string]avg)
	bodyMassIndexScoreGirlMap := make(map[string]avg)
	bodyMassIndexScore2AvgMap := make(map[string]avg)
	bodyMassIndexScore2BoyMap := make(map[string]avg)
	bodyMassIndexScore2GirlMap := make(map[string]avg)
	bodyMassIndexAvgMaxMap := make(map[string]interface{})
	bodyMassIndexAvgMinMap := make(map[string]interface{})
	bodyMassIndexBoyMaxMap := make(map[string]interface{})
	bodyMassIndexBoyMinMap := make(map[string]interface{})
	bodyMassIndexGirlMaxMap := make(map[string]interface{})
	bodyMassIndexGirlMinMap := make(map[string]interface{})
	bodyMassIndexAvgDistribution := make(map[string]distribution4)
	bodyMassIndexBoyDistribution := make(map[string]distribution4)
	bodyMassIndexGirlDistribution := make(map[string]distribution4)
	bodyFatAvgMap := make(map[string]avg)
	bodyFatBoyMap := make(map[string]avg)
	bodyFatGirlMap := make(map[string]avg)
	bodyFat2AvgMap := make(map[string]avg)
	bodyFat2BoyMap := make(map[string]avg)
	bodyFat2GirlMap := make(map[string]avg)
	bodyFatAvgDistribution := make(map[string]distribution4)
	bodyFatBoyDistribution := make(map[string]distribution4)
	bodyFatGirlDistribution := make(map[string]distribution4)
	vitalCapacityAvgMap := make(map[string]avg)
	vitalCapacityBoyMap := make(map[string]avg)
	vitalCapacityGirlMap := make(map[string]avg)
	vitalCapacity2AvgMap := make(map[string]avg)
	vitalCapacity2BoyMap := make(map[string]avg)
	vitalCapacity2GirlMap := make(map[string]avg)
	vitalCapacityScoreAvgMap := make(map[string]avg)
	vitalCapacityScoreBoyMap := make(map[string]avg)
	vitalCapacityScoreGirlMap := make(map[string]avg)
	vitalCapacityScore2AvgMap := make(map[string]avg)
	vitalCapacityScore2BoyMap := make(map[string]avg)
	vitalCapacityScore2GirlMap := make(map[string]avg)
	vitalCapacityBoyDistribution := make(map[string]distribution4)
	vitalCapacityGirlDistribution := make(map[string]distribution4)
	vitalCapacityAvgDistribution := make(map[string]distribution4)
	fiftyMetersAvgMap := make(map[string]avg)
	fiftyMetersBoyMap := make(map[string]avg)
	fiftyMetersGirlMap := make(map[string]avg)
	fiftyMeters2AvgMap := make(map[string]avg)
	fiftyMeters2BoyMap := make(map[string]avg)
	fiftyMeters2GirlMap := make(map[string]avg)
	fiftyMetersScoreAvgMap := make(map[string]avg)
	fiftyMetersScoreBoyMap := make(map[string]avg)
	fiftyMetersScoreGirlMap := make(map[string]avg)
	fiftyMetersScore2AvgMap := make(map[string]avg)
	fiftyMetersScore2BoyMap := make(map[string]avg)
	fiftyMetersScore2GirlMap := make(map[string]avg)
	fiftyMetersBoyDistribution := make(map[string]distribution4)
	fiftyMetersGirlDistribution := make(map[string]distribution4)
	fiftyMetersAvgDistribution := make(map[string]distribution4)
	sitAndReachAvgMap := make(map[string]avg)
	sitAndReachBoyMap := make(map[string]avg)
	sitAndReachGirlMap := make(map[string]avg)
	sitAndReach2AvgMap := make(map[string]avg)
	sitAndReach2BoyMap := make(map[string]avg)
	sitAndReach2GirlMap := make(map[string]avg)
	sitAndReachScoreAvgMap := make(map[string]avg)
	sitAndReachScoreBoyMap := make(map[string]avg)
	sitAndReachScoreGirlMap := make(map[string]avg)
	sitAndReachScore2AvgMap := make(map[string]avg)
	sitAndReachScore2BoyMap := make(map[string]avg)
	sitAndReachScore2GirlMap := make(map[string]avg)
	sitAndReachBoyDistribution := make(map[string]distribution4)
	sitAndReachGirlDistribution := make(map[string]distribution4)
	sitAndReachAvgDistribution := make(map[string]distribution4)
	standingLongJumpAvgMap := make(map[string]avg)
	standingLongJumpBoyMap := make(map[string]avg)
	standingLongJumpGirlMap := make(map[string]avg)
	standingLongJump2AvgMap := make(map[string]avg)
	standingLongJump2BoyMap := make(map[string]avg)
	standingLongJump2GirlMap := make(map[string]avg)
	standingLongJumpScoreAvgMap := make(map[string]avg)
	standingLongJumpScoreBoyMap := make(map[string]avg)
	standingLongJumpScoreGirlMap := make(map[string]avg)
	standingLongJumpScore2AvgMap := make(map[string]avg)
	standingLongJumpScore2BoyMap := make(map[string]avg)
	standingLongJumpScore2GirlMap := make(map[string]avg)
	standingLongJumpBoyDistribution := make(map[string]distribution4)
	standingLongJumpGirlDistribution := make(map[string]distribution4)
	standingLongJumpAvgDistribution := make(map[string]distribution4)
	oneMinuteSitUpsAvgMap := make(map[string]avg)
	oneMinuteSitUpsBoyMap := make(map[string]avg)
	oneMinuteSitUpsGirlMap := make(map[string]avg)
	oneMinuteSitUps2AvgMap := make(map[string]avg)
	oneMinuteSitUps2BoyMap := make(map[string]avg)
	oneMinuteSitUps2GirlMap := make(map[string]avg)
	oneMinuteSitUpsScoreAvgMap := make(map[string]avg)
	oneMinuteSitUpsScoreBoyMap := make(map[string]avg)
	oneMinuteSitUpsScoreGirlMap := make(map[string]avg)
	oneMinuteSitUpsScore2AvgMap := make(map[string]avg)
	oneMinuteSitUpsScore2BoyMap := make(map[string]avg)
	oneMinuteSitUpsScore2GirlMap := make(map[string]avg)
	oneMinuteSitUpsBoyDistribution := make(map[string]distribution4)
	oneMinuteSitUpsGirlDistribution := make(map[string]distribution4)
	oneMinuteSitUpsAvgDistribution := make(map[string]distribution4)
	enduranceRunAvgMap := make(map[string]avg)
	enduranceRunBoyMap := make(map[string]avg)
	enduranceRunGirlMap := make(map[string]avg)
	enduranceRun2AvgMap := make(map[string]avg)
	enduranceRun2BoyMap := make(map[string]avg)
	enduranceRun2GirlMap := make(map[string]avg)
	enduranceRunScoreAvgMap := make(map[string]avg)
	enduranceRunScoreBoyMap := make(map[string]avg)
	enduranceRunScoreGirlMap := make(map[string]avg)
	enduranceRunScore2AvgMap := make(map[string]avg)
	enduranceRunScore2BoyMap := make(map[string]avg)
	enduranceRunScore2GirlMap := make(map[string]avg)
	enduranceRunBoyDistribution := make(map[string]distribution4)
	enduranceRunGirlDistribution := make(map[string]distribution4)
	enduranceRunAvgDistribution := make(map[string]distribution4)
	gripAvgMap := make(map[string]avg)
	gripBoyMap := make(map[string]avg)
	gripGirlMap := make(map[string]avg)
	grip2AvgMap := make(map[string]avg)
	grip2BoyMap := make(map[string]avg)
	grip2GirlMap := make(map[string]avg)
	gripBoyDistribution := make(map[string]distribution4)
	gripGirlDistribution := make(map[string]distribution4)
	gripAvgDistribution := make(map[string]distribution4)
	reactionSpeedAvgMap := make(map[string]avg)
	reactionSpeedBoyMap := make(map[string]avg)
	reactionSpeedGirlMap := make(map[string]avg)
	reactionSpeed2AvgMap := make(map[string]avg)
	reactionSpeed2BoyMap := make(map[string]avg)
	reactionSpeed2GirlMap := make(map[string]avg)
	reactionSpeedBoyDistribution := make(map[string]distribution4)
	reactionSpeedGirlDistribution := make(map[string]distribution4)
	reactionSpeedAvgDistribution := make(map[string]distribution4)
	verticalJumpAvgMap := make(map[string]avg)
	verticalJumpBoyMap := make(map[string]avg)
	verticalJumpGirlMap := make(map[string]avg)
	verticalJump2AvgMap := make(map[string]avg)
	verticalJump2BoyMap := make(map[string]avg)
	verticalJump2GirlMap := make(map[string]avg)
	verticalJumpBoyDistribution := make(map[string]distribution4)
	verticalJumpGirlDistribution := make(map[string]distribution4)
	verticalJumpAvgDistribution := make(map[string]distribution4)
	balanceAbilityAvgMap := make(map[string]avg)
	balanceAbilityBoyMap := make(map[string]avg)
	balanceAbilityGirlMap := make(map[string]avg)
	balanceAbility2AvgMap := make(map[string]avg)
	balanceAbility2BoyMap := make(map[string]avg)
	balanceAbility2GirlMap := make(map[string]avg)
	balanceAbilityBoyDistribution := make(map[string]distribution4)
	balanceAbilityGirlDistribution := make(map[string]distribution4)
	balanceAbilityAvgDistribution := make(map[string]distribution4)
	var boyDistribution4, girlDistribution4, avgDistribution4 distribution4
	for i := 0; i < len(scores); i++ {
		if scores[i].MissingTestNum == 0 {
			scoreAvg.add(scores[i].PhysicalTotalScore.Float64)
			avgDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			if scores[i].Sex == 1 {
				boyScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				boyDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			} else if scores[i].Sex == 2 {
				girlScoreAvg.add(scores[i].PhysicalTotalScore.Float64)
				girlDistribution4.add(scores[i].PhysicalTotalScore.Float64, 90, 80, 60)
			}
		}
		if scores[i].BodyFat.Valid || scores[i].GripStrength.Valid || scores[i].ResponseCapability.Valid || scores[i].BalanceAbility.Valid || scores[i].VerticalJump.Valid {
			reportData.SchoolInfo.HasExtension = true
		}
		class, _ := strconv.ParseInt(scores[i].Class[5:7], 10, 64)
		classStr := strconv.FormatInt(class, 10) + "班"
		classesMap[classStr] = 0
		scores[i].Class = classStr
		avgMapAdd(classStr, scores[i].PhysicalTotalScore.Float64, &classScoreMap)
		avgMapAdd("总体", scores[i].PhysicalTotalScore.Float64, &classScoreMap)
		avgMapAdd(classStr, math.Pow(scores[i].PhysicalTotalScore.Float64, 2), &classScore2Map)
		avgMapAdd("总体", math.Pow(scores[i].PhysicalTotalScore.Float64, 2), &classScore2Map)
		eachInfo := studentNumMap[classStr]
		if scores[i].Sex == 1 {
			eachInfo.Boy++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					eachInfo.BoyPrivilege++
				} else {
					eachInfo.BoyAbsent++
				}
			}
		} else if scores[i].Sex == 2 {
			eachInfo.Girl++
			if scores[i].MissingTestNum > 0 {
				if scores[i].IsExemption {
					eachInfo.GirlPrivilege++
				} else {
					eachInfo.GirlAbsent++
				}
			}
		}
		studentNumMap[classStr] = eachInfo
		if studentMap[classStr] == nil {
			studentMap[classStr] = make(map[string]map[string]interface{})
		}
		if studentMap[classStr][scores[i].SchoolRollId] == nil {
			studentMap[classStr][scores[i].SchoolRollId] = make(map[string]interface{})
		}
		student := new(entity.Student)
		err = student.SelectAllBySchoolRollId(scores[i].SchoolRollId)
		if err != nil {
			return err, ""
		}
		studentMap[classStr][scores[i].SchoolRollId]["姓名"] = student.Name
		studentMap[classStr][scores[i].SchoolRollId]["总分"] = scores[i].PhysicalTotalScore.Float64
		if student.Sex == 1 {
			studentMap[classStr][scores[i].SchoolRollId]["性别"] = "男"
		} else if student.Sex == 2 {
			studentMap[classStr][scores[i].SchoolRollId]["性别"] = "女"
		}
		if scores[i].BodyMassIndexLevel.Valid {
			if scores[i].BodyMassIndexLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["体重指数"] = scores[i].BodyMassIndexTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["体重指数"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["体重指数"] = float64(-2)
		}
		if scores[i].VitalCapacityLevel.Valid {
			if scores[i].VitalCapacityLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["肺活量"] = scores[i].VitalCapacityTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["肺活量"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["肺活量"] = float64(-2)
		}
		if scores[i].FiftyMetersLevel.Valid {
			if scores[i].FiftyMetersLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["50米跑"] = scores[i].FiftyMetersTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["50米跑"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["50米跑"] = float64(-2)
		}
		if scores[i].SitAndReachLevel.Valid {
			if scores[i].FiftyMetersLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["坐位体前屈"] = scores[i].SitAndReachTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["坐位体前屈"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["坐位体前屈"] = float64(-2)
		}

		if scores[i].OneThousandMetersLevel.Valid {
			if scores[i].OneThousandMetersLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["耐力跑"] = scores[i].OneThousandMetersTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["耐力跑"] = float64(-1)
			}
		} else if scores[i].EightHundredMetersLevel.Valid {
			if scores[i].EightHundredMetersLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["耐力跑"] = scores[i].EightHundredMetersTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["耐力跑"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["耐力跑"] = float64(-2)
		}
		if scores[i].OneMinuteSitUpLevel.Valid {
			if scores[i].OneMinuteSitUpLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = scores[i].OneMinuteSitUpTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = float64(-1)
			}
		} else if scores[i].ChinningLevel.Valid {
			if scores[i].ChinningLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = scores[i].ChinningTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["一分钟仰卧起坐"] = float64(-2)
		}
		if scores[i].StandingLongJumpLevel.Valid {
			if scores[i].StandingLongJumpLevel.String != "缺测" {
				studentMap[classStr][scores[i].SchoolRollId]["立定跳远"] = scores[i].StandingLongJumpTotalScore.Float64
			} else {
				studentMap[classStr][scores[i].SchoolRollId]["立定跳远"] = float64(-1)
			}
		} else {
			studentMap[classStr][scores[i].SchoolRollId]["立定跳远"] = float64(-2)
		}
		if scores[i].BodyMassIndex.Valid {
			itemMap["体重指数"] = 0
		}
		if scores[i].VitalCapacity.Valid {
			itemMap["肺活量"] = 0
		}
		if scores[i].FiftyMeters.Valid {
			itemMap["50米跑"] = 0
		}
		if scores[i].SitAndReach.Valid {
			itemMap["坐位体前屈"] = 0
		}
		if scores[i].ShuttleRun.Valid {
			itemMap["50米×8往返跑"] = 0
		}
		if scores[i].OneMinuteSitUp.Valid {
			itemMap["一分钟仰卧起坐"] = 0
		}
		if scores[i].OneMinuteRopeSkipping.Valid {
			itemMap["一分钟跳绳"] = 0
		}
		if scores[i].Height.Valid {
			avgMapAdd(classStr, scores[i].Height.Float64, &heightAvgMap)
			avgMapAdd("总体", scores[i].Height.Float64, &heightAvgMap)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].Height.Float64, &heightBoyMap)
				avgMapAdd("总体", scores[i].Height.Float64, &heightBoyMap)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].Height.Float64, &heightGirlMap)
				avgMapAdd("总体", scores[i].Height.Float64, &heightGirlMap)
			}
		}
		if scores[i].Weight.Valid {
			avgMapAdd(classStr, scores[i].Weight.Float64, &weightAvgMap)
			avgMapAdd("总体", scores[i].Weight.Float64, &weightAvgMap)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].Weight.Float64, &weightBoyMap)
				avgMapAdd("总体", scores[i].Weight.Float64, &weightBoyMap)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].Weight.Float64, &weightGirlMap)
				avgMapAdd("总体", scores[i].Weight.Float64, &weightGirlMap)
			}
		}
		if scores[i].BodyMassIndex.Valid {
			avgMapAdd(classStr, scores[i].BodyMassIndex.Float64, &bodyMassIndexAvgMap)
			avgMapAdd("总体", scores[i].BodyMassIndex.Float64, &bodyMassIndexAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2AvgMap)
			avgMapAdd(classStr, scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreAvgMap)
			avgMapAdd("总体", scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2AvgMap)
			if bodyMassIndexAvgMaxMap[classStr] == nil {
				bodyMassIndexAvgMaxMap[classStr] = math.SmallestNonzeroFloat64
			}
			if bodyMassIndexAvgMaxMap["总体"] == nil {
				bodyMassIndexAvgMaxMap["总体"] = math.SmallestNonzeroFloat64
			}
			bodyMassIndexAvgMaxMap[classStr] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMaxMap[classStr].(float64))
			bodyMassIndexAvgMaxMap["总体"] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMaxMap["总体"].(float64))
			if bodyMassIndexAvgMinMap[classStr] == nil {
				bodyMassIndexAvgMinMap[classStr] = math.MaxFloat64
			}
			if bodyMassIndexAvgMinMap["总体"] == nil {
				bodyMassIndexAvgMinMap["总体"] = math.MaxFloat64
			}
			distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", classStr, &bodyMassIndexAvgDistribution)
			distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", "总体", &bodyMassIndexAvgDistribution)
			bodyMassIndexAvgMinMap[classStr] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMinMap[classStr].(float64))
			bodyMassIndexAvgMinMap["总体"] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexAvgMinMap["总体"].(float64))
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].BodyMassIndex.Float64, &bodyMassIndexBoyMap)
				avgMapAdd("总体", scores[i].BodyMassIndex.Float64, &bodyMassIndexBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2BoyMap)
				avgMapAdd(classStr, scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreBoyMap)
				avgMapAdd("总体", scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2BoyMap)
				if bodyMassIndexBoyMaxMap[classStr] == nil {
					bodyMassIndexBoyMaxMap[classStr] = math.SmallestNonzeroFloat64
				}
				if bodyMassIndexBoyMaxMap["总体"] == nil {
					bodyMassIndexBoyMaxMap["总体"] = math.SmallestNonzeroFloat64
				}
				bodyMassIndexBoyMaxMap[classStr] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMaxMap[classStr].(float64))
				bodyMassIndexBoyMaxMap["总体"] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMaxMap["总体"].(float64))
				if bodyMassIndexBoyMinMap[classStr] == nil {
					bodyMassIndexBoyMinMap[classStr] = math.MaxFloat64
				}
				if bodyMassIndexBoyMinMap["总体"] == nil {
					bodyMassIndexBoyMinMap["总体"] = math.MaxFloat64
				}
				bodyMassIndexBoyMinMap[classStr] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMinMap[classStr].(float64))
				bodyMassIndexBoyMinMap["总体"] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexBoyMinMap["总体"].(float64))
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", classStr, &bodyMassIndexBoyDistribution)
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", "总体", &bodyMassIndexBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].BodyMassIndex.Float64, &bodyMassIndexGirlMap)
				avgMapAdd("总体", scores[i].BodyMassIndex.Float64, &bodyMassIndexGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndex.Float64, 2), &bodyMassIndex2GirlMap)
				avgMapAdd(classStr, scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreGirlMap)
				avgMapAdd("总体", scores[i].BodyMassIndexTotalScore.Float64, &bodyMassIndexScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyMassIndexTotalScore.Float64, 2), &bodyMassIndexScore2GirlMap)
				if bodyMassIndexGirlMaxMap[classStr] == nil {
					bodyMassIndexGirlMaxMap[classStr] = math.SmallestNonzeroFloat64
				}
				if bodyMassIndexGirlMaxMap["总体"] == nil {
					bodyMassIndexGirlMaxMap["总体"] = math.SmallestNonzeroFloat64
				}
				bodyMassIndexGirlMaxMap[classStr] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMaxMap[classStr].(float64))
				bodyMassIndexGirlMaxMap["总体"] = math.Max(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMaxMap["总体"].(float64))
				if bodyMassIndexGirlMinMap[classStr] == nil {
					bodyMassIndexGirlMinMap[classStr] = math.MaxFloat64
				}
				if bodyMassIndexGirlMinMap["总体"] == nil {
					bodyMassIndexGirlMinMap["总体"] = math.MaxFloat64
				}
				bodyMassIndexGirlMinMap[classStr] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMinMap[classStr].(float64))
				bodyMassIndexGirlMinMap["总体"] = math.Min(scores[i].BodyMassIndex.Float64, bodyMassIndexGirlMinMap["总体"].(float64))
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", classStr, &bodyMassIndexGirlDistribution)
				distributionMapAdd4(scores[i].BodyMassIndexLevel.String, "肥胖", "超重", "正常", "低体重", "总体", &bodyMassIndexGirlDistribution)
			}
		}
		if scores[i].BodyFat.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].BodyFat.Float64, &bodyFatAvgMap)
			avgMapAdd("总体", scores[i].BodyFat.Float64, &bodyFatAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2AvgMap)
			distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", classStr, &bodyFatAvgDistribution)
			distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", "总体", &bodyFatAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].BodyFat.Float64, &bodyFatBoyMap)
				avgMapAdd("总体", scores[i].BodyFat.Float64, &bodyFatBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2BoyMap)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", classStr, &bodyFatBoyDistribution)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", "总体", &bodyFatBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].BodyFat.Float64, &bodyFatGirlMap)
				avgMapAdd("总体", scores[i].BodyFat.Float64, &bodyFatGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BodyFat.Float64, 2), &bodyFat2GirlMap)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", classStr, &bodyFatGirlDistribution)
				distributionMapAdd4(scores[i].BodyFatLevel.String, "超标准", "标准", "低标准", "", "总体", &bodyFatGirlDistribution)
			}
		}
		if scores[i].VitalCapacity.Valid {
			avgMapAdd(classStr, scores[i].VitalCapacity.Float64, &vitalCapacityAvgMap)
			avgMapAdd("总体", scores[i].VitalCapacity.Float64, &vitalCapacityAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2AvgMap)
			avgMapAdd(classStr, scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreAvgMap)
			avgMapAdd("总体", scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2AvgMap)
			distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, classStr, &vitalCapacityAvgDistribution)
			distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, "总体", &vitalCapacityAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].VitalCapacity.Float64, &vitalCapacityBoyMap)
				avgMapAdd("总体", scores[i].VitalCapacity.Float64, &vitalCapacityBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2BoyMap)
				avgMapAdd(classStr, scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreBoyMap)
				avgMapAdd("总体", scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2BoyMap)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, classStr, &vitalCapacityBoyDistribution)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, "总体", &vitalCapacityBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].VitalCapacity.Float64, &vitalCapacityGirlMap)
				avgMapAdd("总体", scores[i].VitalCapacity.Float64, &vitalCapacityGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacity.Float64, 2), &vitalCapacity2GirlMap)
				avgMapAdd(classStr, scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreGirlMap)
				avgMapAdd("总体", scores[i].VitalCapacityTotalScore.Float64, &vitalCapacityScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].VitalCapacityTotalScore.Float64, 2), &vitalCapacityScore2GirlMap)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, classStr, &vitalCapacityGirlDistribution)
				distributionMapAdd(scores[i].VitalCapacityTotalScore.Float64, 90, 80, 60, "总体", &vitalCapacityGirlDistribution)
			}
		}
		if scores[i].FiftyMeters.Valid {
			avgMapAdd(classStr, scores[i].FiftyMeters.Float64, &fiftyMetersAvgMap)
			avgMapAdd("总体", scores[i].FiftyMeters.Float64, &fiftyMetersAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2AvgMap)
			avgMapAdd(classStr, scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreAvgMap)
			avgMapAdd("总体", scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2AvgMap)
			distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, classStr, &fiftyMetersAvgDistribution)
			distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, "总体", &fiftyMetersAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].FiftyMeters.Float64, &fiftyMetersBoyMap)
				avgMapAdd("总体", scores[i].FiftyMeters.Float64, &fiftyMetersBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2BoyMap)
				avgMapAdd(classStr, scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreBoyMap)
				avgMapAdd("总体", scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2BoyMap)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, classStr, &fiftyMetersBoyDistribution)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, "总体", &fiftyMetersBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].FiftyMeters.Float64, &fiftyMetersGirlMap)
				avgMapAdd("总体", scores[i].FiftyMeters.Float64, &fiftyMetersGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMeters.Float64, 2), &fiftyMeters2GirlMap)
				avgMapAdd(classStr, scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreGirlMap)
				avgMapAdd("总体", scores[i].FiftyMetersTotalScore.Float64, &fiftyMetersScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].FiftyMetersTotalScore.Float64, 2), &fiftyMetersScore2GirlMap)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, classStr, &fiftyMetersGirlDistribution)
				distributionMapAdd(scores[i].FiftyMetersTotalScore.Float64, 90, 80, 60, "总体", &fiftyMetersGirlDistribution)
			}
		}
		if scores[i].SitAndReach.Valid {
			avgMapAdd(classStr, scores[i].SitAndReach.Float64, &sitAndReachAvgMap)
			avgMapAdd("总体", scores[i].SitAndReach.Float64, &sitAndReachAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2AvgMap)
			avgMapAdd(classStr, scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreAvgMap)
			avgMapAdd("总体", scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2AvgMap)
			distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, classStr, &sitAndReachAvgDistribution)
			distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, "总体", &sitAndReachAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].SitAndReach.Float64, &sitAndReachBoyMap)
				avgMapAdd("总体", scores[i].SitAndReach.Float64, &sitAndReachBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2BoyMap)
				avgMapAdd(classStr, scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreBoyMap)
				avgMapAdd("总体", scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2BoyMap)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, classStr, &sitAndReachBoyDistribution)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, "总体", &sitAndReachBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].SitAndReach.Float64, &sitAndReachGirlMap)
				avgMapAdd("总体", scores[i].SitAndReach.Float64, &sitAndReachGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReach.Float64, 2), &sitAndReach2GirlMap)
				avgMapAdd(classStr, scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreGirlMap)
				avgMapAdd("总体", scores[i].SitAndReachTotalScore.Float64, &sitAndReachScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].SitAndReachTotalScore.Float64, 2), &sitAndReachScore2GirlMap)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, classStr, &sitAndReachGirlDistribution)
				distributionMapAdd(scores[i].SitAndReachTotalScore.Float64, 90, 80, 60, "总体", &sitAndReachGirlDistribution)
			}
		}
		if scores[i].StandingLongJump.Valid {
			avgMapAdd(classStr, scores[i].StandingLongJump.Float64, &standingLongJumpAvgMap)
			avgMapAdd("总体", scores[i].StandingLongJump.Float64, &standingLongJumpAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].StandingLongJump.Float64, 2), &standingLongJump2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].StandingLongJump.Float64, 2), &standingLongJump2AvgMap)
			avgMapAdd(classStr, scores[i].StandingLongJumpTotalScore.Float64, &standingLongJumpScoreAvgMap)
			avgMapAdd("总体", scores[i].StandingLongJumpTotalScore.Float64, &standingLongJumpScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].StandingLongJumpTotalScore.Float64, 2), &standingLongJumpScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].StandingLongJumpTotalScore.Float64, 2), &standingLongJumpScore2AvgMap)
			distributionMapAdd(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60, classStr, &standingLongJumpAvgDistribution)
			distributionMapAdd(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60, "总体", &standingLongJumpAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].StandingLongJump.Float64, &standingLongJumpBoyMap)
				avgMapAdd("总体", scores[i].StandingLongJump.Float64, &standingLongJumpBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].StandingLongJump.Float64, 2), &standingLongJump2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].StandingLongJump.Float64, 2), &standingLongJump2BoyMap)
				avgMapAdd(classStr, scores[i].StandingLongJumpTotalScore.Float64, &standingLongJumpScoreBoyMap)
				avgMapAdd("总体", scores[i].StandingLongJumpTotalScore.Float64, &standingLongJumpScoreBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].StandingLongJumpTotalScore.Float64, 2), &standingLongJumpScore2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].StandingLongJumpTotalScore.Float64, 2), &standingLongJumpScore2BoyMap)
				distributionMapAdd(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60, classStr, &standingLongJumpBoyDistribution)
				distributionMapAdd(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60, "总体", &standingLongJumpBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].StandingLongJump.Float64, &standingLongJumpGirlMap)
				avgMapAdd("总体", scores[i].StandingLongJump.Float64, &standingLongJumpGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].StandingLongJump.Float64, 2), &standingLongJump2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].StandingLongJump.Float64, 2), &standingLongJump2GirlMap)
				avgMapAdd(classStr, scores[i].StandingLongJumpTotalScore.Float64, &standingLongJumpScoreGirlMap)
				avgMapAdd("总体", scores[i].StandingLongJumpTotalScore.Float64, &standingLongJumpScoreGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].StandingLongJumpTotalScore.Float64, 2), &standingLongJumpScore2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].StandingLongJumpTotalScore.Float64, 2), &standingLongJumpScore2GirlMap)
				distributionMapAdd(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60, classStr, &standingLongJumpGirlDistribution)
				distributionMapAdd(scores[i].StandingLongJumpTotalScore.Float64, 90, 80, 60, "总体", &standingLongJumpGirlDistribution)
			}
		}
		if scores[i].OneMinuteSitUp.Valid {
			avgMapAdd(classStr, scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2AvgMap)
			avgMapAdd(classStr, scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2AvgMap)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSitUpsAvgDistribution)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSitUpsAvgDistribution)
			avgMapAdd(classStr, scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsGirlMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsGirlMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2GirlMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2GirlMap)
			avgMapAdd(classStr, scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreGirlMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreGirlMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2GirlMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2GirlMap)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSitUpsGirlDistribution)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSitUpsGirlDistribution)
		}
		if scores[i].Chinning.Valid {
			avgMapAdd(classStr, scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUp.Float64, &oneMinuteSitUpsAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUp.Float64, 2), &oneMinuteSitUps2AvgMap)
			avgMapAdd(classStr, scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreAvgMap)
			avgMapAdd("总体", scores[i].OneMinuteSitUpTotalScore.Float64, &oneMinuteSitUpsScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneMinuteSitUpTotalScore.Float64, 2), &oneMinuteSitUpsScore2AvgMap)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSitUpsAvgDistribution)
			distributionMapAdd(scores[i].OneMinuteSitUpTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSitUpsAvgDistribution)
			avgMapAdd(classStr, scores[i].Chinning.Float64, &oneMinuteSitUpsBoyMap)
			avgMapAdd("总体", scores[i].Chinning.Float64, &oneMinuteSitUpsBoyMap)
			avgMapAdd(classStr, math.Pow(scores[i].Chinning.Float64, 2), &oneMinuteSitUps2BoyMap)
			avgMapAdd("总体", math.Pow(scores[i].Chinning.Float64, 2), &oneMinuteSitUps2BoyMap)
			avgMapAdd(classStr, scores[i].ChinningTotalScore.Float64, &oneMinuteSitUpsScoreBoyMap)
			avgMapAdd("总体", scores[i].ChinningTotalScore.Float64, &oneMinuteSitUpsScoreBoyMap)
			avgMapAdd(classStr, math.Pow(scores[i].ChinningTotalScore.Float64, 2), &oneMinuteSitUpsScore2BoyMap)
			avgMapAdd("总体", math.Pow(scores[i].ChinningTotalScore.Float64, 2), &oneMinuteSitUpsScore2BoyMap)
			distributionMapAdd(scores[i].ChinningTotalScore.Float64, 90, 80, 60, classStr, &oneMinuteSitUpsBoyDistribution)
			distributionMapAdd(scores[i].ChinningTotalScore.Float64, 90, 80, 60, "总体", &oneMinuteSitUpsBoyDistribution)
		}
		if scores[i].OneThousandMeters.Valid {
			avgMapAdd(classStr, scores[i].OneThousandMeters.Float64, &enduranceRunAvgMap)
			avgMapAdd("总体", scores[i].OneThousandMeters.Float64, &enduranceRunAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneThousandMeters.Float64, 2), &enduranceRun2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneThousandMeters.Float64, 2), &enduranceRun2AvgMap)
			avgMapAdd(classStr, scores[i].OneThousandMetersTotalScore.Float64, &enduranceRunScoreAvgMap)
			avgMapAdd("总体", scores[i].OneThousandMetersTotalScore.Float64, &enduranceRunScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneThousandMetersTotalScore.Float64, 2), &enduranceRunScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].OneThousandMetersTotalScore.Float64, 2), &enduranceRunScore2AvgMap)
			distributionMapAdd(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60, classStr, &enduranceRunAvgDistribution)
			distributionMapAdd(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60, "总体", &enduranceRunAvgDistribution)
			avgMapAdd(classStr, scores[i].OneThousandMeters.Float64, &enduranceRunBoyMap)
			avgMapAdd("总体", scores[i].OneThousandMeters.Float64, &enduranceRunBoyMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneThousandMeters.Float64, 2), &enduranceRun2BoyMap)
			avgMapAdd("总体", math.Pow(scores[i].OneThousandMeters.Float64, 2), &enduranceRun2BoyMap)
			avgMapAdd(classStr, scores[i].OneThousandMetersTotalScore.Float64, &enduranceRunScoreBoyMap)
			avgMapAdd("总体", scores[i].OneThousandMetersTotalScore.Float64, &enduranceRunScoreBoyMap)
			avgMapAdd(classStr, math.Pow(scores[i].OneThousandMetersTotalScore.Float64, 2), &enduranceRunScore2BoyMap)
			avgMapAdd("总体", math.Pow(scores[i].OneThousandMetersTotalScore.Float64, 2), &enduranceRunScore2BoyMap)
			distributionMapAdd(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60, classStr, &enduranceRunBoyDistribution)
			distributionMapAdd(scores[i].OneThousandMetersTotalScore.Float64, 90, 80, 60, "总体", &enduranceRunBoyDistribution)
		}
		if scores[i].EightHundredMeters.Valid {
			avgMapAdd(classStr, scores[i].EightHundredMeters.Float64, &enduranceRunAvgMap)
			avgMapAdd("总体", scores[i].EightHundredMeters.Float64, &enduranceRunAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].EightHundredMeters.Float64, 2), &enduranceRun2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].EightHundredMeters.Float64, 2), &enduranceRun2AvgMap)
			avgMapAdd(classStr, scores[i].EightHundredMetersTotalScore.Float64, &enduranceRunScoreAvgMap)
			avgMapAdd("总体", scores[i].EightHundredMetersTotalScore.Float64, &enduranceRunScoreAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].EightHundredMetersTotalScore.Float64, 2), &enduranceRunScore2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].EightHundredMetersTotalScore.Float64, 2), &enduranceRunScore2AvgMap)
			distributionMapAdd(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60, classStr, &enduranceRunAvgDistribution)
			distributionMapAdd(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60, "总体", &enduranceRunAvgDistribution)
			avgMapAdd(classStr, scores[i].EightHundredMeters.Float64, &enduranceRunGirlMap)
			avgMapAdd("总体", scores[i].EightHundredMeters.Float64, &enduranceRunGirlMap)
			avgMapAdd(classStr, math.Pow(scores[i].EightHundredMeters.Float64, 2), &enduranceRun2GirlMap)
			avgMapAdd("总体", math.Pow(scores[i].EightHundredMeters.Float64, 2), &enduranceRun2GirlMap)
			avgMapAdd(classStr, scores[i].EightHundredMetersTotalScore.Float64, &enduranceRunScoreGirlMap)
			avgMapAdd("总体", scores[i].EightHundredMetersTotalScore.Float64, &enduranceRunScoreGirlMap)
			avgMapAdd(classStr, math.Pow(scores[i].EightHundredMetersTotalScore.Float64, 2), &enduranceRunScore2GirlMap)
			avgMapAdd("总体", math.Pow(scores[i].EightHundredMetersTotalScore.Float64, 2), &enduranceRunScore2GirlMap)
			distributionMapAdd(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60, classStr, &enduranceRunGirlDistribution)
			distributionMapAdd(scores[i].EightHundredMetersTotalScore.Float64, 90, 80, 60, "总体", &enduranceRunGirlDistribution)
		}
		if scores[i].GripStrength.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].GripStrength.Float64, &gripAvgMap)
			avgMapAdd("总体", scores[i].GripStrength.Float64, &gripAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].GripStrength.Float64, 2), &grip2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].GripStrength.Float64, 2), &grip2AvgMap)
			distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", classStr, &gripAvgDistribution)
			distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", "总体", &gripAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].GripStrength.Float64, &gripBoyMap)
				avgMapAdd("总体", scores[i].GripStrength.Float64, &gripBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].GripStrength.Float64, 2), &grip2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].GripStrength.Float64, 2), &grip2BoyMap)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", classStr, &gripBoyDistribution)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", "总体", &gripBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].GripStrength.Float64, &gripGirlMap)
				avgMapAdd("总体", scores[i].GripStrength.Float64, &gripGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].GripStrength.Float64, 2), &grip2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].GripStrength.Float64, 2), &grip2GirlMap)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", classStr, &gripGirlDistribution)
				distributionMapAdd4(scores[i].GripStrengthLevel.String, "优秀", "良好", "及格", "不及格", "总体", &gripGirlDistribution)
			}
		}
		if scores[i].ResponseCapability.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].ResponseCapability.Float64, &reactionSpeedAvgMap)
			avgMapAdd("总体", scores[i].ResponseCapability.Float64, &reactionSpeedAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2AvgMap)
			distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &reactionSpeedAvgDistribution)
			distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &reactionSpeedAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].ResponseCapability.Float64, &reactionSpeedBoyMap)
				avgMapAdd("总体", scores[i].ResponseCapability.Float64, &reactionSpeedBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2BoyMap)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &reactionSpeedBoyDistribution)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &reactionSpeedBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].ResponseCapability.Float64, &reactionSpeedGirlMap)
				avgMapAdd("总体", scores[i].ResponseCapability.Float64, &reactionSpeedGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].ResponseCapability.Float64, 2), &reactionSpeed2GirlMap)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &reactionSpeedGirlDistribution)
				distributionMapAdd4(scores[i].ResponseCapabilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &reactionSpeedGirlDistribution)
			}
		}
		if scores[i].VerticalJump.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].VerticalJump.Float64, &verticalJumpAvgMap)
			avgMapAdd("总体", scores[i].VerticalJump.Float64, &verticalJumpAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2AvgMap)
			distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", classStr, &verticalJumpAvgDistribution)
			distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", "总体", &verticalJumpAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].VerticalJump.Float64, &verticalJumpBoyMap)
				avgMapAdd("总体", scores[i].VerticalJump.Float64, &verticalJumpBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2BoyMap)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", classStr, &verticalJumpBoyDistribution)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", "总体", &verticalJumpBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].VerticalJump.Float64, &verticalJumpGirlMap)
				avgMapAdd("总体", scores[i].VerticalJump.Float64, &verticalJumpGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].VerticalJump.Float64, 2), &verticalJump2GirlMap)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", classStr, &verticalJumpGirlDistribution)
				distributionMapAdd4(scores[i].VerticalJumpLevel.String, "优秀", "良好", "及格", "不及格", "总体", &verticalJumpGirlDistribution)
			}
		}
		if scores[i].BalanceAbility.Valid {
			reportData.SchoolInfo.HasExtension = true
			avgMapAdd(classStr, scores[i].BalanceAbility.Float64, &balanceAbilityAvgMap)
			avgMapAdd("总体", scores[i].BalanceAbility.Float64, &balanceAbilityAvgMap)
			avgMapAdd(classStr, math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2AvgMap)
			avgMapAdd("总体", math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2AvgMap)
			distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &balanceAbilityAvgDistribution)
			distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &balanceAbilityAvgDistribution)
			if scores[i].Sex == 1 {
				avgMapAdd(classStr, scores[i].BalanceAbility.Float64, &balanceAbilityBoyMap)
				avgMapAdd("总体", scores[i].BalanceAbility.Float64, &balanceAbilityBoyMap)
				avgMapAdd(classStr, math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2BoyMap)
				avgMapAdd("总体", math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2BoyMap)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &balanceAbilityBoyDistribution)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &balanceAbilityBoyDistribution)
			} else if scores[i].Sex == 2 {
				avgMapAdd(classStr, scores[i].BalanceAbility.Float64, &balanceAbilityGirlMap)
				avgMapAdd("总体", scores[i].BalanceAbility.Float64, &balanceAbilityGirlMap)
				avgMapAdd(classStr, math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2GirlMap)
				avgMapAdd("总体", math.Pow(scores[i].BalanceAbility.Float64, 2), &balanceAbility2GirlMap)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", classStr, &balanceAbilityGirlDistribution)
				distributionMapAdd4(scores[i].BalanceAbilityLevel.String, "优秀", "良好", "及格", "不及格", "总体", &balanceAbilityGirlDistribution)
			}
		}
	}
	reportData.GradeInfo.Score = scoreAvg.calculate()
	if reportData.GradeInfo.Score >= 90 {
		reportData.GradeInfo.Level = "优"
	} else if reportData.GradeInfo.Score >= 80 {
		reportData.GradeInfo.Level = "良"
	} else if reportData.GradeInfo.Score >= 60 {
		reportData.GradeInfo.Level = "中"
	} else {
		reportData.GradeInfo.Level = "差"
	}
	var classes []string
	var items []string
	for k := range classesMap {
		classes = append(classes, k)
	}
	for k := range itemMap {
		items = append(items, k)
	}
	items = []string{"总分", "肺活量", "50米跑", "坐位体前屈", "立定跳远", "一分钟仰卧起坐", "耐力跑"}
	classesMap["总体"] = len(classes)
	itemMap["总分"] = len(items)
	sort.Strings(classes)
	for i := 0; i < len(classes); i++ {
		classesMap[classes[i]] = i
	}
	for i := 0; i < len(items); i++ {
		itemMap[items[i]] = i
	}
	reportData.GradeInfo.Classes = append(classes, "总体")
	reportData.GradeInfo.ClassesScore = make([]float64, len(reportData.GradeInfo.Classes))
	reportData.GradeInfo.ClassesStandardDeviation = make([]float64, len(reportData.GradeInfo.Classes))
	reportData.StudentNum.IndexName = classes
	reportData.StudentNum.EachInfo = make([]studentNumEachInfo, len(reportData.StudentNum.IndexName))
	reportData.StudentInfo.IndexName = classes
	reportData.StudentInfo.Items = items
	reportData.StudentInfo.EachInfo = make([]studentInfoEachInfo, len(classes))
	reportData.Height.IndexName = append(classes, "总体")
	reportData.Height.EachInfo = make([]item1EachInfo, len(classes)+1)
	reportData.Weight.IndexName = append(classes, "总体")
	reportData.Weight.EachInfo = make([]item1EachInfo, len(classes)+1)
	reportData.BodyMassIndex.IndexName = append(classes, "总体")
	reportData.BodyMassIndex.EachInfo = make([]item5EachInfo, len(classes)+1)
	reportData.BodyFat.IndexName = append(classes, "总体")
	reportData.BodyFat.EachInfo = make([]item6EachInfo, len(classes)+1)
	reportData.VitalCapacity.IndexName = append(classes, "总体")
	reportData.VitalCapacity.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.FiftyMeter.IndexName = append(classes, "总体")
	reportData.FiftyMeter.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.SitAndReach.IndexName = append(classes, "总体")
	reportData.SitAndReach.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.StandingLongJump.IndexName = append(classes, "总体")
	reportData.StandingLongJump.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.OneMinuteSitUps.IndexName = append(classes, "总体")
	reportData.OneMinuteSitUps.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.EnduranceRun.IndexName = append(classes, "总体")
	reportData.EnduranceRun.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.Grip.IndexName = append(classes, "总体")
	reportData.Grip.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.ReactionSpeed.IndexName = append(classes, "总体")
	reportData.ReactionSpeed.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.VerticalJump.IndexName = append(classes, "总体")
	reportData.VerticalJump.EachInfo = make([]item7EachInfo, len(classes)+1)
	reportData.BalanceAbility.IndexName = append(classes, "总体")
	reportData.BalanceAbility.EachInfo = make([]item7EachInfo, len(classes)+1)
	for i := 0; i < len(classes)+1; i++ {
		str := reportData.GradeInfo.Classes[i]
		index := classesMap[reportData.GradeInfo.Classes[i]]
		reportData.GradeInfo.ClassesScore[index] = avgMapCalculate(str, &classScoreMap)
		reportData.GradeInfo.ClassesStandardDeviation[index] = math.Sqrt(avgMapCalculate(str, &classScore2Map) - math.Pow(reportData.GradeInfo.ClassesScore[index], 2))
		reportData.Height.EachInfo[index].Boy.Result = avgMapCalculate(str, &heightBoyMap)
		reportData.Height.EachInfo[index].Girl.Result = avgMapCalculate(str, &heightGirlMap)
		reportData.Height.EachInfo[index].Avg.Result = avgMapCalculate(str, &heightAvgMap)
		reportData.Weight.EachInfo[index].Boy.Result = avgMapCalculate(str, &weightBoyMap)
		reportData.Weight.EachInfo[index].Girl.Result = avgMapCalculate(str, &weightGirlMap)
		reportData.Weight.EachInfo[index].Avg.Result = avgMapCalculate(str, &weightAvgMap)
		reportData.BodyMassIndex.EachInfo[index].Boy.Result = avgMapCalculate(str, &bodyMassIndexBoyMap)
		reportData.BodyMassIndex.EachInfo[index].Girl.Result = avgMapCalculate(str, &bodyMassIndexGirlMap)
		reportData.BodyMassIndex.EachInfo[index].Avg.Result = avgMapCalculate(str, &bodyMassIndexAvgMap)
		reportData.BodyMassIndex.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndex2BoyMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Boy.Result, 2))
		reportData.BodyMassIndex.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndex2GirlMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Girl.Result, 2))
		reportData.BodyMassIndex.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndex2AvgMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Avg.Result, 2))
		reportData.BodyMassIndex.EachInfo[index].Boy.Score = avgMapCalculate(str, &bodyMassIndexScoreBoyMap)
		reportData.BodyMassIndex.EachInfo[index].Girl.Score = avgMapCalculate(str, &bodyMassIndexScoreGirlMap)
		reportData.BodyMassIndex.EachInfo[index].Avg.Score = avgMapCalculate(str, &bodyMassIndexScoreAvgMap)
		reportData.BodyMassIndex.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndexScore2BoyMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Boy.Score, 2))
		reportData.BodyMassIndex.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndexScore2GirlMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Girl.Score, 2))
		reportData.BodyMassIndex.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyMassIndexScore2AvgMap) - math.Pow(reportData.BodyMassIndex.EachInfo[index].Avg.Score, 2))
		reportData.BodyMassIndex.EachInfo[index].Boy.Max = bodyMassIndexBoyMaxMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Boy.Min = bodyMassIndexBoyMinMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Girl.Max = bodyMassIndexGirlMaxMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Girl.Min = bodyMassIndexGirlMinMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Avg.Max = bodyMassIndexAvgMaxMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Avg.Min = bodyMassIndexAvgMinMap[str].(float64)
		reportData.BodyMassIndex.EachInfo[index].Boy.Percentage = distributionMapCalculate4(str, &bodyMassIndexBoyDistribution)
		reportData.BodyMassIndex.EachInfo[index].Girl.Percentage = distributionMapCalculate4(str, &bodyMassIndexGirlDistribution)
		reportData.BodyMassIndex.EachInfo[index].Avg.Percentage = distributionMapCalculate4(str, &bodyMassIndexAvgDistribution)
		reportData.BodyFat.EachInfo[index].Boy.Result = avgMapCalculate(str, &bodyFatBoyMap)
		reportData.BodyFat.EachInfo[index].Girl.Result = avgMapCalculate(str, &bodyFatGirlMap)
		reportData.BodyFat.EachInfo[index].Avg.Result = avgMapCalculate(str, &bodyFatAvgMap)
		reportData.BodyFat.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyFat2BoyMap) - math.Pow(reportData.BodyFat.EachInfo[index].Boy.Result, 2))
		reportData.BodyFat.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyFat2GirlMap) - math.Pow(reportData.BodyFat.EachInfo[index].Girl.Result, 2))
		reportData.BodyFat.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &bodyFat2AvgMap) - math.Pow(reportData.BodyFat.EachInfo[index].Avg.Result, 2))
		reportData.BodyFat.EachInfo[index].Boy.Excess = distributionMapCustomCalculate4(1, str, &bodyFatBoyDistribution)
		reportData.BodyFat.EachInfo[index].Boy.Standard = distributionMapCustomCalculate4(2, str, &bodyFatBoyDistribution)
		reportData.BodyFat.EachInfo[index].Boy.LowStandard = distributionMapCustomCalculate4(3, str, &bodyFatBoyDistribution)
		reportData.BodyFat.EachInfo[index].Girl.Excess = distributionMapCustomCalculate4(1, str, &bodyFatGirlDistribution)
		reportData.BodyFat.EachInfo[index].Girl.Standard = distributionMapCustomCalculate4(2, str, &bodyFatGirlDistribution)
		reportData.BodyFat.EachInfo[index].Girl.LowStandard = distributionMapCustomCalculate4(3, str, &bodyFatGirlDistribution)
		reportData.BodyFat.EachInfo[index].Avg.Excess = distributionMapCustomCalculate4(1, str, &bodyFatAvgDistribution)
		reportData.BodyFat.EachInfo[index].Avg.Standard = distributionMapCustomCalculate4(2, str, &bodyFatAvgDistribution)
		reportData.BodyFat.EachInfo[index].Avg.LowStandard = distributionMapCustomCalculate4(3, str, &bodyFatAvgDistribution)
		reportData.VitalCapacity.EachInfo[index].Boy.Result = avgMapCalculate(str, &vitalCapacityBoyMap)
		reportData.VitalCapacity.EachInfo[index].Girl.Result = avgMapCalculate(str, &vitalCapacityGirlMap)
		reportData.VitalCapacity.EachInfo[index].Avg.Result = avgMapCalculate(str, &vitalCapacityAvgMap)
		reportData.VitalCapacity.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacity2BoyMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Boy.Result, 2))
		reportData.VitalCapacity.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacity2GirlMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Girl.Result, 2))
		reportData.VitalCapacity.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacity2AvgMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Avg.Result, 2))
		reportData.VitalCapacity.EachInfo[index].Boy.Score = avgMapCalculate(str, &vitalCapacityScoreBoyMap)
		reportData.VitalCapacity.EachInfo[index].Girl.Score = avgMapCalculate(str, &vitalCapacityScoreGirlMap)
		reportData.VitalCapacity.EachInfo[index].Avg.Score = avgMapCalculate(str, &vitalCapacityScoreAvgMap)
		reportData.VitalCapacity.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacityScore2BoyMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Boy.Score, 2))
		reportData.VitalCapacity.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacityScore2GirlMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Girl.Score, 2))
		reportData.VitalCapacity.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &vitalCapacityScore2AvgMap) - math.Pow(reportData.VitalCapacity.EachInfo[index].Avg.Score, 2))
		reportData.VitalCapacity.EachInfo[index].Boy.Nums = distributionCalculate5(str, &vitalCapacityBoyDistribution)
		reportData.VitalCapacity.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &vitalCapacityBoyDistribution)
		reportData.VitalCapacity.EachInfo[index].Girl.Nums = distributionCalculate5(str, &vitalCapacityGirlDistribution)
		reportData.VitalCapacity.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &vitalCapacityGirlDistribution)
		reportData.VitalCapacity.EachInfo[index].Avg.Nums = distributionCalculate5(str, &vitalCapacityAvgDistribution)
		reportData.VitalCapacity.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &vitalCapacityAvgDistribution)
		reportData.FiftyMeter.EachInfo[index].Boy.Result = avgMapCalculate(str, &fiftyMetersBoyMap)
		reportData.FiftyMeter.EachInfo[index].Girl.Result = avgMapCalculate(str, &fiftyMetersGirlMap)
		reportData.FiftyMeter.EachInfo[index].Avg.Result = avgMapCalculate(str, &fiftyMetersAvgMap)
		reportData.FiftyMeter.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMeters2BoyMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Boy.Result, 2))
		reportData.FiftyMeter.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMeters2GirlMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Girl.Result, 2))
		reportData.FiftyMeter.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMeters2AvgMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Avg.Result, 2))
		reportData.FiftyMeter.EachInfo[index].Boy.Score = avgMapCalculate(str, &fiftyMetersScoreBoyMap)
		reportData.FiftyMeter.EachInfo[index].Girl.Score = avgMapCalculate(str, &fiftyMetersScoreGirlMap)
		reportData.FiftyMeter.EachInfo[index].Avg.Score = avgMapCalculate(str, &fiftyMetersScoreAvgMap)
		reportData.FiftyMeter.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMetersScore2BoyMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Boy.Score, 2))
		reportData.FiftyMeter.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMetersScore2GirlMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Girl.Score, 2))
		reportData.FiftyMeter.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &fiftyMetersScore2AvgMap) - math.Pow(reportData.FiftyMeter.EachInfo[index].Avg.Score, 2))
		reportData.FiftyMeter.EachInfo[index].Boy.Nums = distributionCalculate5(str, &fiftyMetersBoyDistribution)
		reportData.FiftyMeter.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &fiftyMetersBoyDistribution)
		reportData.FiftyMeter.EachInfo[index].Girl.Nums = distributionCalculate5(str, &fiftyMetersGirlDistribution)
		reportData.FiftyMeter.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &fiftyMetersGirlDistribution)
		reportData.FiftyMeter.EachInfo[index].Avg.Nums = distributionCalculate5(str, &fiftyMetersAvgDistribution)
		reportData.FiftyMeter.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &fiftyMetersAvgDistribution)
		reportData.SitAndReach.EachInfo[index].Boy.Result = avgMapCalculate(str, &sitAndReachBoyMap)
		reportData.SitAndReach.EachInfo[index].Girl.Result = avgMapCalculate(str, &sitAndReachGirlMap)
		reportData.SitAndReach.EachInfo[index].Avg.Result = avgMapCalculate(str, &sitAndReachAvgMap)
		reportData.SitAndReach.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReach2BoyMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Boy.Result, 2))
		reportData.SitAndReach.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReach2GirlMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Girl.Result, 2))
		reportData.SitAndReach.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReach2AvgMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Avg.Result, 2))
		reportData.SitAndReach.EachInfo[index].Boy.Score = avgMapCalculate(str, &sitAndReachScoreBoyMap)
		reportData.SitAndReach.EachInfo[index].Girl.Score = avgMapCalculate(str, &sitAndReachScoreGirlMap)
		reportData.SitAndReach.EachInfo[index].Avg.Score = avgMapCalculate(str, &sitAndReachScoreAvgMap)
		reportData.SitAndReach.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReachScore2BoyMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Boy.Score, 2))
		reportData.SitAndReach.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReachScore2GirlMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Girl.Score, 2))
		reportData.SitAndReach.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &sitAndReachScore2AvgMap) - math.Pow(reportData.SitAndReach.EachInfo[index].Avg.Score, 2))
		reportData.SitAndReach.EachInfo[index].Boy.Nums = distributionCalculate5(str, &sitAndReachBoyDistribution)
		reportData.SitAndReach.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &sitAndReachBoyDistribution)
		reportData.SitAndReach.EachInfo[index].Girl.Nums = distributionCalculate5(str, &sitAndReachGirlDistribution)
		reportData.SitAndReach.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &sitAndReachGirlDistribution)
		reportData.SitAndReach.EachInfo[index].Avg.Nums = distributionCalculate5(str, &sitAndReachAvgDistribution)
		reportData.SitAndReach.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &sitAndReachAvgDistribution)
		reportData.StandingLongJump.EachInfo[index].Boy.Result = avgMapCalculate(str, &standingLongJumpBoyMap)
		reportData.StandingLongJump.EachInfo[index].Girl.Result = avgMapCalculate(str, &standingLongJumpGirlMap)
		reportData.StandingLongJump.EachInfo[index].Avg.Result = avgMapCalculate(str, &standingLongJumpAvgMap)
		reportData.StandingLongJump.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &standingLongJump2BoyMap) - math.Pow(reportData.StandingLongJump.EachInfo[index].Boy.Result, 2))
		reportData.StandingLongJump.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &standingLongJump2GirlMap) - math.Pow(reportData.StandingLongJump.EachInfo[index].Girl.Result, 2))
		reportData.StandingLongJump.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &standingLongJump2AvgMap) - math.Pow(reportData.StandingLongJump.EachInfo[index].Avg.Result, 2))
		reportData.StandingLongJump.EachInfo[index].Boy.Score = avgMapCalculate(str, &standingLongJumpScoreBoyMap)
		reportData.StandingLongJump.EachInfo[index].Girl.Score = avgMapCalculate(str, &standingLongJumpScoreGirlMap)
		reportData.StandingLongJump.EachInfo[index].Avg.Score = avgMapCalculate(str, &standingLongJumpScoreAvgMap)
		reportData.StandingLongJump.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &standingLongJumpScore2BoyMap) - math.Pow(reportData.StandingLongJump.EachInfo[index].Boy.Score, 2))
		reportData.StandingLongJump.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &standingLongJumpScore2GirlMap) - math.Pow(reportData.StandingLongJump.EachInfo[index].Girl.Score, 2))
		reportData.StandingLongJump.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &standingLongJumpScore2AvgMap) - math.Pow(reportData.StandingLongJump.EachInfo[index].Avg.Score, 2))
		reportData.StandingLongJump.EachInfo[index].Boy.Nums = distributionCalculate5(str, &standingLongJumpBoyDistribution)
		reportData.StandingLongJump.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &standingLongJumpBoyDistribution)
		reportData.StandingLongJump.EachInfo[index].Girl.Nums = distributionCalculate5(str, &standingLongJumpGirlDistribution)
		reportData.StandingLongJump.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &standingLongJumpGirlDistribution)
		reportData.StandingLongJump.EachInfo[index].Avg.Nums = distributionCalculate5(str, &standingLongJumpAvgDistribution)
		reportData.StandingLongJump.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &standingLongJumpAvgDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Result = avgMapCalculate(str, &oneMinuteSitUpsBoyMap)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Result = avgMapCalculate(str, &oneMinuteSitUpsGirlMap)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Result = avgMapCalculate(str, &oneMinuteSitUpsAvgMap)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUps2BoyMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Boy.Result, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUps2GirlMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Girl.Result, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUps2AvgMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Avg.Result, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Score = avgMapCalculate(str, &oneMinuteSitUpsScoreBoyMap)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Score = avgMapCalculate(str, &oneMinuteSitUpsScoreGirlMap)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Score = avgMapCalculate(str, &oneMinuteSitUpsScoreAvgMap)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUpsScore2BoyMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Boy.Score, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUpsScore2GirlMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Girl.Score, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &oneMinuteSitUpsScore2AvgMap) - math.Pow(reportData.OneMinuteSitUps.EachInfo[index].Avg.Score, 2))
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Nums = distributionCalculate5(str, &oneMinuteSitUpsBoyDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &oneMinuteSitUpsBoyDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Nums = distributionCalculate5(str, &oneMinuteSitUpsGirlDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &oneMinuteSitUpsGirlDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Nums = distributionCalculate5(str, &oneMinuteSitUpsAvgDistribution)
		reportData.OneMinuteSitUps.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &oneMinuteSitUpsAvgDistribution)
		reportData.EnduranceRun.EachInfo[index].Boy.Result = avgMapCalculate(str, &enduranceRunBoyMap)
		reportData.EnduranceRun.EachInfo[index].Girl.Result = avgMapCalculate(str, &enduranceRunGirlMap)
		reportData.EnduranceRun.EachInfo[index].Avg.Result = avgMapCalculate(str, &enduranceRunAvgMap)
		reportData.EnduranceRun.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &enduranceRun2BoyMap) - math.Pow(reportData.EnduranceRun.EachInfo[index].Boy.Result, 2))
		reportData.EnduranceRun.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &enduranceRun2GirlMap) - math.Pow(reportData.EnduranceRun.EachInfo[index].Girl.Result, 2))
		reportData.EnduranceRun.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &enduranceRun2AvgMap) - math.Pow(reportData.EnduranceRun.EachInfo[index].Avg.Result, 2))
		reportData.EnduranceRun.EachInfo[index].Boy.Score = avgMapCalculate(str, &enduranceRunScoreBoyMap)
		reportData.EnduranceRun.EachInfo[index].Girl.Score = avgMapCalculate(str, &enduranceRunScoreGirlMap)
		reportData.EnduranceRun.EachInfo[index].Avg.Score = avgMapCalculate(str, &enduranceRunScoreAvgMap)
		reportData.EnduranceRun.EachInfo[index].Boy.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &enduranceRunScore2BoyMap) - math.Pow(reportData.EnduranceRun.EachInfo[index].Boy.Score, 2))
		reportData.EnduranceRun.EachInfo[index].Girl.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &enduranceRunScore2GirlMap) - math.Pow(reportData.EnduranceRun.EachInfo[index].Girl.Score, 2))
		reportData.EnduranceRun.EachInfo[index].Avg.ScoreStandardDeviation = math.Sqrt(avgMapCalculate(str, &enduranceRunScore2AvgMap) - math.Pow(reportData.EnduranceRun.EachInfo[index].Avg.Score, 2))
		reportData.EnduranceRun.EachInfo[index].Boy.Nums = distributionCalculate5(str, &enduranceRunBoyDistribution)
		reportData.EnduranceRun.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &enduranceRunBoyDistribution)
		reportData.EnduranceRun.EachInfo[index].Girl.Nums = distributionCalculate5(str, &enduranceRunGirlDistribution)
		reportData.EnduranceRun.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &enduranceRunGirlDistribution)
		reportData.EnduranceRun.EachInfo[index].Avg.Nums = distributionCalculate5(str, &enduranceRunAvgDistribution)
		reportData.EnduranceRun.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &enduranceRunAvgDistribution)
		reportData.Grip.EachInfo[index].Boy.Result = avgMapCalculate(str, &gripBoyMap)
		reportData.Grip.EachInfo[index].Girl.Result = avgMapCalculate(str, &gripGirlMap)
		reportData.Grip.EachInfo[index].Avg.Result = avgMapCalculate(str, &gripAvgMap)
		reportData.Grip.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &grip2BoyMap) - math.Pow(reportData.Grip.EachInfo[index].Boy.Result, 2))
		reportData.Grip.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &grip2GirlMap) - math.Pow(reportData.Grip.EachInfo[index].Girl.Result, 2))
		reportData.Grip.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &grip2AvgMap) - math.Pow(reportData.Grip.EachInfo[index].Avg.Result, 2))
		reportData.Grip.EachInfo[index].Boy.Nums = distributionCalculate5(str, &gripBoyDistribution)
		reportData.Grip.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &gripBoyDistribution)
		reportData.Grip.EachInfo[index].Girl.Nums = distributionCalculate5(str, &gripGirlDistribution)
		reportData.Grip.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &gripGirlDistribution)
		reportData.Grip.EachInfo[index].Avg.Nums = distributionCalculate5(str, &gripAvgDistribution)
		reportData.Grip.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &gripAvgDistribution)
		reportData.ReactionSpeed.EachInfo[index].Boy.Result = avgMapCalculate(str, &reactionSpeedBoyMap)
		reportData.ReactionSpeed.EachInfo[index].Girl.Result = avgMapCalculate(str, &reactionSpeedGirlMap)
		reportData.ReactionSpeed.EachInfo[index].Avg.Result = avgMapCalculate(str, &reactionSpeedAvgMap)
		reportData.ReactionSpeed.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &reactionSpeed2BoyMap) - math.Pow(reportData.ReactionSpeed.EachInfo[index].Boy.Result, 2))
		reportData.ReactionSpeed.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &reactionSpeed2GirlMap) - math.Pow(reportData.ReactionSpeed.EachInfo[index].Girl.Result, 2))
		reportData.ReactionSpeed.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &reactionSpeed2AvgMap) - math.Pow(reportData.ReactionSpeed.EachInfo[index].Avg.Result, 2))
		reportData.ReactionSpeed.EachInfo[index].Boy.Nums = distributionCalculate5(str, &reactionSpeedBoyDistribution)
		reportData.ReactionSpeed.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &reactionSpeedBoyDistribution)
		reportData.ReactionSpeed.EachInfo[index].Girl.Nums = distributionCalculate5(str, &reactionSpeedGirlDistribution)
		reportData.ReactionSpeed.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &reactionSpeedGirlDistribution)
		reportData.ReactionSpeed.EachInfo[index].Avg.Nums = distributionCalculate5(str, &reactionSpeedAvgDistribution)
		reportData.ReactionSpeed.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &reactionSpeedAvgDistribution)
		reportData.VerticalJump.EachInfo[index].Boy.Result = avgMapCalculate(str, &verticalJumpBoyMap)
		reportData.VerticalJump.EachInfo[index].Girl.Result = avgMapCalculate(str, &verticalJumpGirlMap)
		reportData.VerticalJump.EachInfo[index].Avg.Result = avgMapCalculate(str, &verticalJumpAvgMap)
		reportData.VerticalJump.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &verticalJump2BoyMap) - math.Pow(reportData.VerticalJump.EachInfo[index].Boy.Result, 2))
		reportData.VerticalJump.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &verticalJump2GirlMap) - math.Pow(reportData.VerticalJump.EachInfo[index].Girl.Result, 2))
		reportData.VerticalJump.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &verticalJump2AvgMap) - math.Pow(reportData.VerticalJump.EachInfo[index].Avg.Result, 2))
		reportData.VerticalJump.EachInfo[index].Boy.Nums = distributionCalculate5(str, &verticalJumpBoyDistribution)
		reportData.VerticalJump.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &verticalJumpBoyDistribution)
		reportData.VerticalJump.EachInfo[index].Girl.Nums = distributionCalculate5(str, &verticalJumpGirlDistribution)
		reportData.VerticalJump.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &verticalJumpGirlDistribution)
		reportData.VerticalJump.EachInfo[index].Avg.Nums = distributionCalculate5(str, &verticalJumpAvgDistribution)
		reportData.VerticalJump.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &verticalJumpAvgDistribution)
		reportData.BalanceAbility.EachInfo[index].Boy.Result = avgMapCalculate(str, &balanceAbilityBoyMap)
		reportData.BalanceAbility.EachInfo[index].Girl.Result = avgMapCalculate(str, &balanceAbilityGirlMap)
		reportData.BalanceAbility.EachInfo[index].Avg.Result = avgMapCalculate(str, &balanceAbilityAvgMap)
		reportData.BalanceAbility.EachInfo[index].Boy.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &balanceAbility2BoyMap) - math.Pow(reportData.BalanceAbility.EachInfo[index].Boy.Result, 2))
		reportData.BalanceAbility.EachInfo[index].Girl.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &balanceAbility2GirlMap) - math.Pow(reportData.BalanceAbility.EachInfo[index].Girl.Result, 2))
		reportData.BalanceAbility.EachInfo[index].Avg.ResultStandardDeviation = math.Sqrt(avgMapCalculate(str, &balanceAbility2AvgMap) - math.Pow(reportData.BalanceAbility.EachInfo[index].Avg.Result, 2))
		reportData.BalanceAbility.EachInfo[index].Boy.Nums = distributionCalculate5(str, &balanceAbilityBoyDistribution)
		reportData.BalanceAbility.EachInfo[index].Boy.Percentage = distributionCalculate6(str, &balanceAbilityBoyDistribution)
		reportData.BalanceAbility.EachInfo[index].Girl.Nums = distributionCalculate5(str, &balanceAbilityGirlDistribution)
		reportData.BalanceAbility.EachInfo[index].Girl.Percentage = distributionCalculate6(str, &balanceAbilityGirlDistribution)
		reportData.BalanceAbility.EachInfo[index].Avg.Nums = distributionCalculate5(str, &balanceAbilityAvgDistribution)
		reportData.BalanceAbility.EachInfo[index].Avg.Percentage = distributionCalculate6(str, &balanceAbilityAvgDistribution)
	}
	for i := 0; i < len(classes); i++ {
		str := classes[i]
		index := classesMap[classes[i]]
		classStudent := studentMap[classes[i]]
		var schoolRollId []string
		reportData.StudentNum.EachInfo[index] = studentNumMap[str]
		reportData.StudentInfo.EachInfo[i].StudentNum = int64(len(classStudent))
		reportData.StudentInfo.EachInfo[i].StudentScores = make([]studentInfoEachInfoStudentScores, len(classStudent))
		for k := range classStudent {
			schoolRollId = append(schoolRollId, k)
		}
		sort.Strings(schoolRollId)
		for j := 0; j < len(schoolRollId); j++ {
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Number = schoolRollId[j]
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Name = classStudent[schoolRollId[j]]["姓名"].(string)
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Sex = classStudent[schoolRollId[j]]["性别"].(string)
			reportData.StudentInfo.EachInfo[i].StudentScores[j].Scores = make([]float64, len(items))
			for k := 0; k < len(items); k++ {
				reportData.StudentInfo.EachInfo[i].StudentScores[j].Scores[k] = classStudent[schoolRollId[j]][items[k]].(float64)
			}
		}
	}
	reportData.GradeLevelInfo.Boy = boyDistribution4.calculate()
	reportData.GradeLevelInfo.Girl = girlDistribution4.calculate()
	reportData.GradeLevelInfo.Avg = avgDistribution4.calculate()
	reportData.EachScoreInfo.Total.BoyScore = boyScoreAvg.calculate()
	reportData.EachScoreInfo.Total.GirlScore = girlScoreAvg.calculate()
	reportData.EachScoreInfo.Total.AvgScore = scoreAvg.calculate()
	data, err := json.MarshalToString(reportData)
	return err, data
}
